cit*_*kid 4 f# optional-parameters
我想在 F# 中定义一个重载成员函数
member o.m1(?x: int) =
o.m1("bugs bunny", x) // <- error, expects a straight int, but x is int option
member o.m1(s: string, ?x: int) =
42
Run Code Online (Sandbox Code Playgroud)
但上面的代码失败了。我可以这样解决这个问题:
member o.m1(?x: int) =
match x with
| Some x -> o.m1("bugs bunny", x)
| _ -> o.m1("bugs bunny")
Run Code Online (Sandbox Code Playgroud)
我想知道是否可以避免这种切换。
您可以通过显式命名可选参数来完成此操作,如下所示:
member o.m1(?x: int) =
o.m1("bugs bunny", ?x = x)
Run Code Online (Sandbox Code Playgroud)