代码之家  ›  专栏  ›  技术社区  ›  Mark Pearl

F#将管道从int转换为bigint

f#
  •  6
  • Mark Pearl  · 技术社区  · 16 年前

    我对F#相当陌生,遇到这个场景,希望有人能解释为什么我的编译器不喜欢这个代码。。。

    如果在F#我做了以下。。。

    let FloatToInt = 10.0 |> int
    let IntToFloat = 10 |> float
    

    但是如果我做了以下事情。。。

    let IntToBigInt = 10 |> bigint
    

    我得到一个错误“类型名或对象构造函数的使用无效。” 我假设这是因为bigint的前向管道没有操作符重载?

    如果我想让这个代码成为可能,我会怎么做?我知道我可以用不同的语法,比如。。。

    let IntToBigInt = bigint(10)
    

    设IntToBigInt=10 |>比基特
    

    1 回复  |  直到 16 年前
        1
  •  17
  •   sepp2k    16 年前

    这与过载无关。 10.0 |> int int . 但是,没有名为 bigint 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