OCaml:函数参数的默认值?

Posted

技术标签:

【中文标题】OCaml:函数参数的默认值?【英文标题】:OCaml: Default values for function arguments? 【发布时间】:2010-11-28 08:05:05 【问题描述】:

php 中,参数的默认值可以设置如下:

function odp(ftw = "OMG!!") 
   //...

OCaml 中是否有类似的功能?

【问题讨论】:

【参考方案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”看起来就像一个部分应用程序。

【讨论】:

通常情况下,我只会使用“let foo arg1 = arg1 + 5;;”,而不使用“~”。这有什么意义? 你可以在这里阅读它们:caml.inria.fr/pub/docs/manual-ocaml/manual006.html#htoc37 更新链接:caml.inria.fr/pub/docs/manual-ocaml/lablexamples.html#sec43

以上是关于OCaml:函数参数的默认值?的主要内容,如果未能解决你的问题,请参考以下文章

golang函数中的参数为啥不支持默认值

Python获取函数参数个数和默认参数

函数之默认参数

函数参数相关(默认参数,占位参数)

Sys.mkdir ocaml 中的 int 参数是啥

Kotlin函数 ① ( 函数头声明 | 函数参数 | 默认参数值 | 具名参数 )