OOP - 如何在Reason中创建接口

时间:2017-09-19 01:40:04

标签: oop ocaml reason

我们说我有以下abstractProductA类,其中包含一个名为methodA的公共方法:

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

我想创建一个界面,说明函数methodA应始终返回string。类似于

的东西
interface abstractProductA {
  abstractProductA(): string
}

只是有理由,然后让类实现它。任何建议都非常受欢迎。谢谢

1 个答案:

答案 0 :(得分: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);