Конструкторы типов
Ахтунг
Необходимо переписать.
В стандартной библиотеке можно часто увидеть такие функции как create
, make
или init
. Все они используются для создание экземпляра значения, вроде списков или строк. Но какие они имеют значение?
Что использовать для своего типа?
Используйте make
, если у вас этот случай. В ином случае create
.
create
Эта функция создаёт экземпляр из каких-нибудь параметров, не говоря о содержимом.
Пример
Так, например, Bytes.create
выделяет кусок памяти (байт), значение в котором никак не проинициализированы. Там могут находиться как пустые ячейки так и "мусор".
ocaml
# Bytes.create 10;;
- : bytes = Bytes.of_string "\b\194\187\148,\127\000\000\000\000"
make
Зачастую используется для инициализации коллекции неким значением.
Пример
ocaml
# Array.make 3 "yo";;
- : string array = [|"yo"; "yo"; "yo"|]
init
Даёт возможность инициализировать коллекцию при создание своим способом.
Пример
ocaml
# Array.init 3 (sprintf "yo%d");;
- : string array = [|"yo0"; "yo1"; "yo2"|]