2017-10-19 182 views
1

我有一个testFactory类。其目的是为了能够通过工厂,然后安排结果进行演示。到目前为止,当试图在测试方法中调用createProductA时,编译器会抱怨createProductA是未绑定的(Unbound value createProductA)。OOP - 如何在原因内部调用类方法

什么是在类中调用方法的正确语法?

class testFactory (factory: abstractFactory) => { 
    as _; 
    pub createProductA => factory#createProductA; 
    pub createProductB => factory#createProductB; 

    pub test() => { 
    Js.log createProductA; 
    Js.log createProductB; 
    } 
}; 
+1

我不知道,如果我之前提到过这一点,但你可能想看看[真实世界的OCaml对类节(https://开头realworldocaml。组织/ V1/EN/HTML/classes.html)。您可以使用[reason-tools](https://github.com/reasonml/reason-tools)将OCaml代码翻译为Reason。 – glennsl

+0

我确实阅读过这一章,而且我经常重新阅读(特别是在地铁上),并尝试使用_以及#。可能在冲过来的时候,我忽略了一些东西。我一如既往地感谢。 –

回答

3

这是类定义的as _;部分来自于,如果你曾经想知道那是什么东西了。

createProductAcreateProductB是方法而不是函数,因此需要在对象上调用它们。 Reason/OCaml不会自动将当前对象绑定到像thisself这样的名称,但会将其放在您的手上,这正是as所做的,_的意思是,像往常一样,“我不关心这个”。因此,如果您将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; 
    } 
}; 
相关问题