OOP - 如何在Reason内部调用类方法

时间:2017-10-19 16:59:58

标签: oop methods ocaml reason

我有一个testFactory课程。目的是能够传入工厂,然后控制输出结果以进行演示。截至目前,当尝试在测试方法中调用createProductA时,编译器会抱怨createProductA未绑定(Unbound value createProductA)。

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

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

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

1 个答案:

答案 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;
  }
};