【发布时间】:2011-09-15 06:48:03
【问题描述】:
考虑以下代码:
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 option
MSDN 状态:
可选参数被解释为 F# 选项类型,因此您可以使用带有 Some 和 None 的匹配表达式以查询选项类型的常规方式查询它们。
对我来说,可选参数不会被解释为 F# 选项类型,否则代码会编译。此外,我不明白为什么,当我将鼠标悬停在fn3 中的?bo 上时,工具提示会显示val bo: int option,但从外部只需要int。我希望一种不接受任何东西的行为,int,Some int 和 None。最后一点,我不明白为什么fn2 有效,而fn4 无效。
感谢您的澄清
【问题讨论】:
标签: f# types option optional-parameters