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

OOP - How to call a class method internally in Reason

我有一个testFactoryclass。目的是能够传入工厂,然后控制台输出结果以进行演示。截至目前,当尝试在测试方法中调用 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 _; 部分的用武之地,如果您曾经想知道那是干什么用的话。

createProductAcreateProductB是方法,不是函数,所以需要在对象上调用。 Reason/OCaml 不会自动将当前对象绑定到像 thisself 这样的名称,而是让你去做,这正是 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;
  }
};