14

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

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

OCaml 中是否有类似的功能?

4

1 回答 1

34

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”将看起来像一个部分应用程序。

于 2009-09-15T03:49:02.830 回答