Как объявить тип карты в Reason ML?

одним из преимуществ Reason ML над JavaScript является то, что он предоставляет Map тип, который использует структурное равенство, а не равенство ссылок.

однако я не могу найти примеры использования этого.

например, как бы я объявил тип scores это отображение строк в целые числа?

/* Something like this */
type scores = Map<string, int>; 

и как бы я создать экземпляр?

/* Something like this */
let myMap = scores();

let myMap2 = myMap.set('x', 100);

1 ответов


стандартная библиотека Map на самом деле довольно уникален в мире языка программирования в том, что это функтор модуля, который вы должны использовать для создания модуля карты для вашего конкретного типа ключа (и поэтому справочная документация по API находится в разделе Map.Make):

module StringMap = Map.Make({
  type t = string;
  let compare = compare
});

type scores = StringMap.t(int);

let myMap = StringMap.empty;
let myMap2 = StringMap.add("x", 100, myMap);

есть и другие структуры данных, которые можно использовать для создания функций, подобных карте, особенно если вам нужен строковый ключ. Есть сравнение различных методы кулинарной BuckleScript. Все, кроме Js.Dict доступны вне BuckleScript. BuckleScript также поставляется с новая структура данных карты в бета-версии стандартной библиотеки которых я еще не пробовал.