我对 F# 相当陌生,遇到了这种情况,希望有人能解释为什么我的编译器不喜欢这些代码......
如果在 F# 中我执行以下操作...
let FloatToInt = 10.0 |> int
let IntToFloat = 10 |> float
一切都很好,数字被转换为相关的数据类型......
但是如果我执行以下操作...
let IntToBigInt = 10 |> bigint
我收到错误“类型名称或对象构造函数的使用无效。”
我认为这是因为 bigint 的前向管道没有运算符重载?
如果我想让这段代码成为可能,我该怎么做?我知道我可以使用不同的语法,例如......
let IntToBigInt = bigint(10)
但我真的很喜欢前向管道语法,并且想知道我是否可以实现它,以便......
let IntToBigInt = 10 |> bigint
会工作...
它与超载无关。10.0 |> int
之所以有效,是因为有一个名为的函数int
。但是没有名为的函数bigint
, so 10 |> bigint
不起作用。
如果你定义一个,它就会起作用:
> let bigint (x:int) = bigint(x);; // looks recursive, but isn't
val bigint : int -> System.Numerics.BigInteger
> 42 |> bigint;;
val it : System.Numerics.BigInteger = 42I
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)