Ocaml 如何合理地将参数分配给方法
我有以下abstractFactory类:Ocaml 如何合理地将参数分配给方法,ocaml,reason,Ocaml,Reason,我有以下abstractFactory类: class virtual virtualProductA = { pub virtual methodA: string; }; class virtual virtualProductB = { pub virtual methodB: int; }; class virtual abstractFactory = { pub virtual createProductA : virtualProductA; pub virtu
class virtual virtualProductA = {
pub virtual methodA: string;
};
class virtual virtualProductB = {
pub virtual methodB: int;
};
class virtual abstractFactory = {
pub virtual createProductA : virtualProductA;
pub virtual createProductB : virtualProductB;
};
特别是,我想指定abstractFactorycreateProductA
方法有一个可选参数,可以是任何类型
大致如下:
pub virtual createProductA(参数?:any):virtualProductA代码>
但是,上面的代码并没有正确编译
任何关于正确语法的建议都将不胜感激。多谢各位
免责声明:我正在使用OCaml。原因示例使用Try-Reason进行翻译
我不确定你的问题是否正确,但以下是我的想法
如果要为类的构造函数提供参数,请参见语法
奥卡姆
理由
在抽象工厂中,方法createProductA
现在接受一个参数,并且是多态的
奥卡姆
理由
类型量词'a.
表示“对于所有类型'a
,…”。它用于告诉编译器“这不是一个类型参数,这只是一个多态方法”
再想一想,您可能希望将virtualProductA
generic,下面是它的语法:
奥卡姆
理由
使用此可选参数,您试图实现什么目标?此外,抽象工厂之类的东西在OCaml中是非常单一的。你的最终目标是什么?更多的是为了学习。在学习了OCaml之后,我认为深入研究该语言的最佳方法是编写熟悉的代码,即OOP。然后将我学到的知识应用到函数式编程中。Param的目的是允许用户在方法中潜在地添加字符串、数字或对象。
class virtual virtualProductA my_object = object
val value : 'a = my_object
method virtual methodA : string
end
class virtual virtualProductA my_object => {
as _;
val value: 'a = my_object;
pub virtual methodA: string;
};
class virtual abstractFactory = object
method virtual createProductA : 'a. 'a -> virtualProductA
method virtual createProductB : virtualProductB
end
class virtual abstractFactory = {
as _;
pub virtual createProductA: 'a. 'a => virtualProductA;
pub virtual createProductB: virtualProductB;
};
class virtual ['a] virtualProductA my_object = object
val value : 'a = my_object
method value = value (* type 'a is inferred here, no need to over-annotate *)
method virtual methodA : string
end
class virtual virtualProductA 'a my_object => {
as _;
val value: 'a = my_object;
pub value = value; /* type 'a is inferred here, no need to over-annotate */
pub virtual methodA: string;
};