OOP - 如何在 Reason 中创建接口
OOP - How to create an interface in Reason
假设我有以下 abstractProductA
class 和一个名为 methodA
的 public 方法:
class abstractProductA = {
pub methodA => "name";
};
我想创建一个接口,说明函数 methodA
应该总是 return a string
。类似于
interface abstractProductA {
abstractProductA(): string
}
只讲道理,然后class实施。任何建议都非常受欢迎。谢谢
你真正要问的似乎是如何定义和使用抽象class,在OCaml/Reason中称为虚拟class:
class virtual virtualProductA = {
pub virtual methodA: string;
};
class abstractProductA = {
inherit virtualProductA;
pub methodA = "name";
};
接口更多的是让消费者抽象出一个实现,而虚拟 class 可以单独用作接口,因为 OCaml/Reason 对象是结构类型的,你也可以只指定您需要的对象类型。当然,如果你愿意,你可以将它绑定到一个名称:
type interfaceA = {.
methodA : string
};
let f (p: interfaceA) => Js.log p#methodA;
f (new abstractProductA);
假设我有以下 abstractProductA
class 和一个名为 methodA
的 public 方法:
class abstractProductA = {
pub methodA => "name";
};
我想创建一个接口,说明函数 methodA
应该总是 return a string
。类似于
interface abstractProductA {
abstractProductA(): string
}
只讲道理,然后class实施。任何建议都非常受欢迎。谢谢
你真正要问的似乎是如何定义和使用抽象class,在OCaml/Reason中称为虚拟class:
class virtual virtualProductA = {
pub virtual methodA: string;
};
class abstractProductA = {
inherit virtualProductA;
pub methodA = "name";
};
接口更多的是让消费者抽象出一个实现,而虚拟 class 可以单独用作接口,因为 OCaml/Reason 对象是结构类型的,你也可以只指定您需要的对象类型。当然,如果你愿意,你可以将它绑定到一个名称:
type interfaceA = {.
methodA : string
};
let f (p: interfaceA) => Js.log p#methodA;
f (new abstractProductA);