OOP - 如何在 Reason 内部调用 class 方法
OOP - How to call a class method internally in Reason
我有一个testFactory
class。目的是能够传入工厂,然后控制台输出结果以进行演示。截至目前,当尝试在测试方法中调用 createProductA
时,编译器会抱怨 createProductA 未绑定 (Unbound value createProductA
)。
在 class 内部调用方法的正确语法是什么?
class testFactory (factory: abstractFactory) => {
as _;
pub createProductA => factory#createProductA;
pub createProductB => factory#createProductB;
pub test () => {
Js.log createProductA;
Js.log createProductB;
}
};
这就是 class 定义的 as _;
部分的用武之地,如果您曾经想知道那是干什么用的话。
createProductA
和createProductB
是方法,不是函数,所以需要在对象上调用。 Reason/OCaml 不会自动将当前对象绑定到像 this
或 self
这样的名称,而是让你去做,这正是 as
所做的,并且_
和往常一样意味着 "I don't care about this"。因此,如果您将 as _;
更改为例如as self;
您将能够在其他地方引用 self
作为当前对象。
试试这个:
class testFactory (factory: abstractFactory) => {
as self;
pub createProductA => factory#createProductA;
pub createProductB => factory#createProductB;
pub test () => {
Js.log self#createProductA;
Js.log self#createProductB;
}
};
我有一个testFactory
class。目的是能够传入工厂,然后控制台输出结果以进行演示。截至目前,当尝试在测试方法中调用 createProductA
时,编译器会抱怨 createProductA 未绑定 (Unbound value createProductA
)。
在 class 内部调用方法的正确语法是什么?
class testFactory (factory: abstractFactory) => {
as _;
pub createProductA => factory#createProductA;
pub createProductB => factory#createProductB;
pub test () => {
Js.log createProductA;
Js.log createProductB;
}
};
这就是 class 定义的 as _;
部分的用武之地,如果您曾经想知道那是干什么用的话。
createProductA
和createProductB
是方法,不是函数,所以需要在对象上调用。 Reason/OCaml 不会自动将当前对象绑定到像 this
或 self
这样的名称,而是让你去做,这正是 as
所做的,并且_
和往常一样意味着 "I don't care about this"。因此,如果您将 as _;
更改为例如as self;
您将能够在其他地方引用 self
作为当前对象。
试试这个:
class testFactory (factory: abstractFactory) => {
as self;
pub createProductA => factory#createProductA;
pub createProductB => factory#createProductB;
pub test () => {
Js.log self#createProductA;
Js.log self#createProductB;
}
};