1

我有一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;
  }
};
4

1 回答 1

3

这就是as _;类定义部分的用武之地,如果您曾经想知道那是做什么用的。

createProductA并且createProductB是方法,而不是函数,因此需要在对象上调用它们。Reason/OCaml 不会自动将当前对象绑定到类似thisor的名称self,而是让你去做,这正是as它的作用,并且_意味着,像往常一样,“我不在乎这个”。因此,如果您更改as _;为 eg 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;
  }
};
于 2017-10-19T17:26:19.467 回答