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:函数参数的默认值?的主要内容,如果未能解决你的问题,请参考以下文章