带扣脚本方法定义=字符串

时间:2018-06-24 20:43:38

标签: types ocaml ffi reason bucklescript

几乎所有扣脚本示例都具有如下语法:

[@bs.send.pipe : t('options)] external parse : array(string) => 'options = "parse";

或类似这样:

[@bs.module "express"] external make : (string, options) => t = "static";

我看到的最简单的示例是在本教程中:https://medium.com/@Hehk/binding-a-library-in-reasonml-e33b6a58b1b3

type t;

[@bs.module] external commander : t = "";

最后一个= string代表什么?在这种情况下,类型t是什么?

2 个答案:

答案 0 :(得分:2)

t是没有定义的类型,称为抽象类型。通常,它在界面中用于隐藏实现,因此,如果不使用特定的关联函数就无法访问和操作它,但实际上根本不需要任何实现。这对于外语互操作尤其有用,因为实现是使用另一种语言进行的。

=之后的字符串是“外部”函数的名称,因此在这种情况下为JavaScript标识符。因此,make外部将产生类似require('express').static(...)的内容,而不是require('express').make(...)

parse外部名称在OCaml和JavaScript中都使用相同的名称,在这种情况下,可以省略外来名称,这就是commander的作用。通过将其保留为空字符串,可以从外部名称中推断出来。

答案 1 :(得分:0)

最后一个= string取决于上下文,该上下文由附加外部定义的[@bs.blabla]设置。

例如,在此片段中:

[@bs.module "express"] external make : (string, options) => t = "static";

因为我们使用的是make,所以我们正在通过“ express”模块的static方法创建一个[@bs.module "express"]函数。

更多信息在这里: https://bucklescript.github.io/docs/en/intro-to-external.html