определение метода Bucklescript = строка - PullRequest
0 голосов
/ 24 июня 2018

Практически во всех примерах с баглскриптом есть такой синтаксис:

[@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 голосов
/ 25 июня 2018

Последнее = string зависит от контекста, который устанавливается [@bs.blabla], предшествующим внешнему определению.

Например, в этом фрагменте:

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

Мы создаем функцию make из метода static модуля "express", потому что мы используем [@bs.module "express"].

Больше информации здесь: https://bucklescript.github.io/docs/en/intro-to-external.html

0 голосов
/ 25 июня 2018

t - это тип без определения, который называется абстрактным типом. Обычно он используется в интерфейсе, чтобы скрыть реализацию, так что вы не можете получить к ней доступ и манипулировать ею, не используя для этого определенные связанные функции, но на самом деле она вообще не требует никакой реализации. Это особенно полезно при взаимодействии с иностранным языком, поскольку реализация выполняется на другом языке.

Строка после = является именем «чужой» функции, поэтому в этом случае используется идентификатор JavaScript. Поэтому make external будет производить что-то вроде require('express').static(...) вместо require('express').make(...).

Внешнее parse использует одно и то же имя как в OCaml, так и в JavaScript, и в этом случае внешнее имя может быть опущено, что и делает commander. Оставив пустую строку, она будет выведена из имени внешнего.

...