如何将参数分配给 Reason 中的方法
How to assign a param to a method in Reason
我有以下抽象工厂class:
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;
};
特别是,我想指定 abstractFactory createProductA
方法有一个可选参数,可以是任何类型。
大致如下:
pub virtual createProductA (param?:any) : virtualProductA;
但是,上面的编译不正确。
非常感谢任何关于正确语法的建议。谢谢。
Disclaimer: I'm using OCaml. The Reason examples are translated using Try Reason.
我不确定我是否答对了你的问题,但这是我对此的看法。
如果你想给你的 class virtualProductA
的构造函数一个参数,这里是语法。
OCaml
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;
};
在您的抽象工厂中,方法 createProductA
现在接受一个参数并且是多态的。
OCaml
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;
};
类型量词'a.
表示"for all types 'a
, ..."。它用来告诉编译器"This is not a type parameter, this is merely a polymorphic method".
再三考虑,您可能希望使 virtualProductA
通用,语法如下:
OCaml
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;
};
我有以下抽象工厂class:
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;
};
特别是,我想指定 abstractFactory createProductA
方法有一个可选参数,可以是任何类型。
大致如下:
pub virtual createProductA (param?:any) : virtualProductA;
但是,上面的编译不正确。
非常感谢任何关于正确语法的建议。谢谢。
Disclaimer: I'm using OCaml. The Reason examples are translated using Try Reason.
我不确定我是否答对了你的问题,但这是我对此的看法。
如果你想给你的 class virtualProductA
的构造函数一个参数,这里是语法。
OCaml
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;
};
在您的抽象工厂中,方法 createProductA
现在接受一个参数并且是多态的。
OCaml
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;
};
类型量词'a.
表示"for all types 'a
, ..."。它用来告诉编译器"This is not a type parameter, this is merely a polymorphic method".
再三考虑,您可能希望使 virtualProductA
通用,语法如下:
OCaml
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;
};