F# 为什么在这个let-bound函数中不需要向上投射?

F# 为什么在这个let-bound函数中不需要向上投射?,f#,F#,据 向方法传递参数时,将自动应用向上转换 在对象类型上。但是,对于模块中的let绑定函数, 除非参数类型声明为 灵活型 但是 我根本不需要向上投射。看一下上面写着: 这意味着,如果F#函数的推断类型在参数位置包含未密封类型,则在调用时可以传递子类型,而不需要显式的向上转换。例如: (示例中显示的与您的几乎相同) 还请注意,对于let绑定函数,除非在某些情况下,例如在组合参数时,如果函数为: let myfun (x: C option)= () “向上投射”不再是自动的。请查看其中的内

向方法传递参数时,将自动应用向上转换 在对象类型上。但是,对于模块中的let绑定函数, 除非参数类型声明为 灵活型

但是

我根本不需要向上投射。

看一下上面写着:

这意味着,如果F#函数的推断类型在参数位置包含未密封类型,则在调用时可以传递子类型,而不需要显式的向上转换。例如:

(示例中显示的与您的几乎相同)

还请注意,对于let绑定函数,除非在某些情况下,例如在组合参数时,如果函数为:

let myfun (x: C option)=
    ()
“向上投射”不再是自动的。

请查看其中的内容:

这意味着,如果F#函数的推断类型在参数位置包含未密封类型,则在调用时可以传递子类型,而不需要显式的向上转换。例如:

(示例中显示的与您的几乎相同)

还请注意,对于let绑定函数,除非在某些情况下,例如在组合参数时,如果函数为:

let myfun (x: C option)=
    ()
向上投射不再是自动的