polymorphism

    6热度

    2回答

    当我进入GHCI命令:t我看到的多态类型: ghci> :t 42 42 :: Num t => t ghci> :t div div :: Integral a => a -> a -> a 但经过我实际评估这些功能我看到的类型默认规则的结果。根据Haskell报告和/或ghc实现应用类型违约规则后,有没有一些命令或能力可以在ghci中观察如何更改类型?

    2热度

    1回答

    在流动结构亚型可能会导致信息丢失: type O = {x: number, y: number}; type P = {x: number, y: number, z: number} function f(o: O) { return o.x * 2, o.y * 2, o; } const p: P = {x: 2, y: 3, z: 100}; const r =

    1热度

    2回答

    我有许多派生自抽象类的类。在一个方法中,我收到一个对象,它是派生类之一。我需要检查一个对象的类型并分配给一个正确的属性。直接的解决方案的工作,但看起来像它可以重构。我不知道如何处理它,但: public MyDerived1 derived1; public MyDerived2 derived2; // .... public MyDerivedX derivedX

    0热度

    2回答

    让我们假设我有一个超级多态基类Shape,其中有许多其他形状类从它派生。 现在如果我有一个包含一个指向这样的形状不同类型的列表形状指针的向量: vector<Shape*> p; // p contains pointer to many different shape objects 我知道有机会获得在向量p每个形状的方法和成员,我需要使用dynamic_cast。 但如果我不知道在运行时实

    0热度

    4回答

    我发现,有可能创建一个子类的实例,并将其分配给类的父类的变量。我无法将这种情况包裹起来。 这里在我的代码中,虽然实例是Human类。它记录了“我是一个动物”在控制台 我有一个关于这几个问题: 这是什么意思,甚至? 可能的结果是什么? 为什么&什么时候有人会做这种东西? 父类: public class Species { public String Shout() {

    2热度

    1回答

    我正在编写一个样本C++程序来试验多态性和地图。 我有以下地图: map<char,Operation*> ops; ops['+'] = new Addition(); ops['-'] = new Subtraction(); ops['*'] = new Multiplication(); ops['/'] = new Division(); 每个类从Operation继承和不通

    3热度

    1回答

    我有一个关于复制多态对象的问题。我的出发点是如何实现克隆功能通常的例子: #include <iostream> class Base { protected: int a; public: void set_a(int x) { a = x; } void get_a() { std::cout << a << "\n"; }

    0热度

    1回答

    我想要设计类似于以下的类结构。主要想法是必须在需要时更新基类指针。同样,我们可以在子类上进行一些不相关的操作。 我想知道如何重新设计这个具有多态性和封装。这可能是一个很noob问题,但任何帮助表示赞赏。 我不关心被剪切的内存泄漏,因为在实际代码中使用了这些代码,因此正在使用删除来避免任何问题。 我想问的是,有没有类似于下面的类结构更好的方法,而不是Child1调用getBase来获取基类指针,它可

    0热度

    1回答

    类似的问题:Java: check for null or allow exception handling 相关:How to deep check for "null" or "undefined" with JS? 假设a.foo()是一个屡试不爽的函数,返回要么 undefined或具有功能的对象如{bar:()=>log('baz')}, 因此,编写似乎是合乎逻辑的 a.foo().ba

    1热度

    2回答

    我需要调用类的一个静态成员before调用类的构造函数。这个类实现了一个接口,我将需要在after the object is constructed之后调用(多态)相同的静态成员。 我相信有些语言允许一到小数点前有一个实例名称访问一个静态方法,像 myClassInstance.staticMethod F#似乎并没有允许,特别是如果类继承自另一个接口以来,接口不能包含静态方法。 下面的代码