OCaml: Значения по умолчанию для аргументов функции?

haystack.magnet().filter(needle);
12
задан Nick Heiner 15 September 2009 в 03:04
поделиться

1 ответ

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

Нормальные именованные параметры объявляются следующим образом:

let foo ~arg1 = arg1 + 5;;

Необязательные именованные параметры объявляются следующим образом:

let odp ?(ftw = "OMG!!") () = print_endline ftw;;

(* and can be used like this *)
odp ~ftw:"hi mom" ();;
odp ();;

Обратите внимание, что за любыми необязательными именованными параметрами должен следовать по крайней мере один необязательный параметр, потому что в противном случае, например, "odp" выше будет просто выглядеть как частичное приложение.

28
ответ дан 2 December 2019 в 05:28
поделиться
Другие вопросы по тегам:

Похожие вопросы: