相关疑难解决方法(0)

使用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
Run Code Online (Sandbox Code Playgroud)

虽然fn1fn2工作就好了,fn4产生以下错误:

init.fsx(6,30):错误FS0001:这个表达式应该是int类型,但是这里有类型'a option

MSDN声明:

可选参数被解释为F#选项类型,因此您可以通过使用具有Some和None的匹配表达式以常规方式查询它们以查询选项类型.

对我来说,可选参数不会被解释为F#选项类型,否则代码将被编译.此外,我不明白为什么,当我?bofn3工具提示中盘旋时,val bo: int option但只是从外面预期int.我期望一个接受任何东西的行为,int,Some int和None.而作为最后一点,我不明白为什么fn2有效,但却fn4没有.

谢谢你的澄清

f# types optional-parameters option

14
推荐指数
2
解决办法
7338
查看次数

标签 统计

f# ×1

option ×1

optional-parameters ×1

types ×1