在print_int中有一系列的函数,比如print_endline和Printf。我不能做这样的事
let n = 10 in
print n;; (* And I haven't to change `print` in case type of `n` changed *)
这是多态打印,如Java、C#、Python等。相反,我们有由程序员显式定义的类C类型。所以我认为OCaml在编译过程中丢失了类型信息,并且在运行时没有这些信息,对吗?这也是我们需要mli文件的原因吗?
编辑:,我厌倦了编写像*print_listi*、*print_list_tuple2i*等函数。我怎样才
我有一些用Java编写代码的经验,但现在我发现自己不得不用Python编写代码。我想要做的是开发一个从抽象类文档扩展到多个文档类型的类结构,这些文档类型将根据数据库的类型从数据库中检索不同的信息。由于可能至少有100种不同的文档类型,我觉得使用抽象来卸载尽可能多的代码--在结构上越高越好--这是我最好的选择。
在Java中,我会写这样的东西:
public abstract class Document(){
private String department
private String date
...
public Document(){
...}
我试图掌握多态性的概念,我有点理解它在OOP的上下文中是什么,但我读到它也可以应用于过程编程,我不太明白它是如何实现的。
例如,我知道Python中有很多方法和操作符,它们已经使用了多态性,但是我编写的函数会被限定为多态函数吗?例如,下面的函数what_type是否被认为是多态的,因为根据定义,它根据它所接收的参数的数据类型而具有不同的行为,还是这仅仅是一个带有条件语句的函数的常规示例?
def what_type(input_var):
'Returns a statement of the data type of the input variable'
在一些书中,声明或继承虚函数的类被称为多态类。
类B没有任何虚函数,但通过了多个is-a测试。
类C有一个虚函数,但没有继承。
class A {};
class B : public A {};
class C
{
public:
virtual void f () {}
};
B类或C类是多态的吗?
我有一个方法(或函数),它返回对多态对象列表的引用:
class A {
};
class B : public A {
};
std::list<boost::shared_ptr<A> >& getList();
如何在boost::python中公开这样的函数,以便在python中迭代列表时,可以看到不同类型的A和B?
我在试着自己去理解,OCaml语言有哪种形式的多态。
我得到了一个例子
let id x = x
这个示例不是等同于C++模板函数吗
template<class A> A id(A x) { return x; }
如果是这样,那么我的问题是: OCaml中是否还有其他形式的多态性?在命令式语言的世界中,这个概念被称为“通用算法”,而不是“多态性”。
我将一个派生类传递到一个函数中,使用Python3.3和swg2.0.10作为基类。
同样的SWIG .i文件也被用于C#,并且运行良好。但是,在Python中,SWIG报告没有接受派生类型的C++方法--只有接受基本类型的方法。该语句是正确的,但我需要传递派生类型,并让SWIG像基本类型一样直接调用。
派生类型在C++中不存在。它只存在于Python (和C#)中。然而,我们已经启用了董事,正如所述,它在C#中运行良好。
Python2.6和2.7的结果相同。
C++
class Base {};
// Note: there is NO "class Derived" in
我刚刚开始从视频课程中学习python,在本课程中,作为多态的例子,提供了以下代码:
class network:
def cable(self): print('I am the cable')
def router(self): print('I am the router')
def switch(self): print('I am the switch')
class tokenRing(network):
def cable(self): print('I am a token ring
短暂的搜索并没有帮助我找到答案,所以我开始怀疑它的存在。问题很简单。我想创建一个多态函数,如下所示:
f :: String -> String
f s = show (length s)
f :: Int -> String
f i = show i
对于不同的数据类型定义不同的函数是指。有可能吗?如果是,是如何实现的?
最近,我的老师在教授多态性,他告诉我们,多态性有两个方面
运行时多态性
编译时多态性
然后他给我们看了这个密码
class A {
void ab(){
System.out.println("ab() in class A");
}
}
class B extends A {
void ab(){
System.out.println("ab() in class B");
}
}
class ObCo {
public static void main(String