В PHP, значения по умолчанию для аргументов могут быть установлены следующим образом:OCaml: значения по умолчанию для аргументов функции?
function odp(ftw = "OMG!!") {
//...
}
Есть ли подобная функциональность в OCaml?
В PHP, значения по умолчанию для аргументов могут быть установлены следующим образом:OCaml: значения по умолчанию для аргументов функции?
function odp(ftw = "OMG!!") {
//...
}
Есть ли подобная функциональность в OCaml?
OCaml не имеет необязательных позиционных параметров, поскольку, поскольку OCaml поддерживает currying, если вы не учитываете некоторые аргументы, это просто похоже на частичное приложение. Однако для именованных параметров существуют необязательные именованные параметры.
Нормальные именованные параметры объявляются следующим образом:
let foo ~arg1 = arg1 + 5;;
Опциональны параметры объявляются следующим образом:
let odp ?(ftw = "OMG!!")() = print_endline ftw;;
(* and can be used like this *)
odp ~ftw:"hi mom"();;
odp();;
Обратите внимание, что любые дополнительные именованные параметры должны быть соблюдены, по крайней мере, один не опциональным параметр, потому что иначе выражение «odp» выше будет выглядеть как частичное приложение.
Как правило, я просто использовал бы «let foo arg1 = arg1 + 5 ;;», без «~». В чем смысл этого? –
вы можете прочитать о них здесь: http://caml.inria.fr/pub/docs/manual-ocaml/manual006.html#htoc37 – newacct
Обновленная ссылка: http://caml.inria.fr/pub/docs/ ручной OCaml/lablexamples.html # sec43 – neo