3

假设我有以下abstractProductA类和一个名为的公共方法methodA

class abstractProductA = {
  pub methodA => "name";
};

我想创建一个接口,说函数methodA应该总是返回一个string. 类似的东西

interface abstractProductA {
  abstractProductA(): string
}

只有在合理的情况下,然后让类实现它。任何建议都非常受欢迎。谢谢

4

1 回答 1

1

您真正想要的是如何定义和使用抽象类,在 OCaml/Reason 中称为虚拟类:

class virtual virtualProductA = {
  pub virtual methodA: string;
};

class abstractProductA = {
  inherit virtualProductA;
  pub methodA = "name";
};

接口更多的是让消费者抽象出一个实现,而虚拟类本身可以用作接口,因为 OCaml/Reason 对象是结构化类型的,您也可以只指定您需要的对象类型。当然,如果您愿意,可以将其绑定到名称:

type interfaceA = {.
  methodA : string
};

let f (p: interfaceA) => Js.log p#methodA;
f (new abstractProductA);
于 2017-09-19T08:38:47.670 回答