使用F#的可选参数和选项类型

问题描述

|| 考虑以下代码:
type Test () =
  member o.fn1 (?bo) = 1
  member o.fn2 (?bo) = o.fn1 bo

  member o.fn3 (?bo) = 1 + bo.Value
  member o.fn4 (?bo) = o.fn3 bo
fn1
fn2
正常工作时,
fn4
会产生以下错误:   init.fsx(6,30):错误FS0001:该表达式应具有int类型,但此处具有\'a选项 MSDN指出:   可选参数被解释为F#选项类型,因此您可以使用带有Some和None的匹配表达式,以查询选项类型的常规方式查询它们。 对我来说,可选参数不会被解释为F#选项类型,否则代码将被编译。此外,我不明白为什么,当我将鼠标悬停在ѭ5中的
?bo
上时,工具提示会显示
val bo: int option
,但从外面期望只有
int
。我期望一种不接受任何内容的行为,即int,Some int和None。最后一点,我不明白为什么
fn2
有效,而
fn4
无效。 感谢您的澄清     

解决方法

暂无找到可以解决该程序问题的有效方法,小编努力寻找整理中!

如果你已经找到好的解决方法,欢迎将解决方案带上本链接一起发送给小编。

小编邮箱:dio#foxmail.com (将#修改为@)