OOP - 如何在 Reason 中创建接口(interface)

标签 oop ocaml reason

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

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

我想创建一个接口(interface),说明函数 methodA 应该总是返回一个 string。类似于

interface abstractProductA {
  abstractProductA(): string
}

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

最佳答案

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

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

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

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

type interfaceA = {.
  methodA : string
};

let f (p: interfaceA) => Js.log p#methodA;
f (new abstractProductA);

关于OOP - 如何在 Reason 中创建接口(interface),我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/46290507/

相关文章:

haskell - 是否有像 `dbg` 这样的跟踪调试器可用于 Haskell 或 OCaml?

functional-programming - 追加函数下面会发生什么?

reactjs - 在 ReasonReact 中从事件监听器获取事件数据时遇到问题

reason - 在 Reason 中仅打开模块中的部分函数

R 引用类 - 如何确定您是否在继承方法中?

python - 有没有什么很酷的方法在 python 类中表达 `if x is None: x = self.x` ?

c# - 在类中定义公共(public)枚举有什么好处?

oop - 将接口(interface)对象传递给构造函数或方法

emacs - 失败 : ocamlfind not found on path, 但未使用 -no-ocamlfind(zsh 终端)

reason - bs-webapi - 如何循环 Dom.nodeList?