我知道这bigint不是一个函数,而是一个类型构造函数.这就是失败的原因:
// Won't compile
let foo = 10 |> bigint
Run Code Online (Sandbox Code Playgroud)
我知道我可以创建一个接受整数并返回a的新函数bigint,然后管道运算符将起作用.
但是,我不明白为什么会这样:
let bar = bigint 10
Run Code Online (Sandbox Code Playgroud)
如果bigint是类型构造函数,为什么我不需要new?究竟是哪里被bigint定义为System.Numerics.BigInteger的构造函数的别名?
bigint是System.Numerics.BigInteger的类型abberviation,因此当您键入时
let x = bigint 10
Run Code Online (Sandbox Code Playgroud)
你实际上创建了BigInteger的实例.在F#中,new在构造函数中是可选的,基本上它应该在创建实现IDisposable的类型的实例时使用