“究竟是什么?”;bigint";在F#中?
我知道“究竟是什么?”;bigint";在F#中?,f#,F#,我知道bigint不是一个函数,而是一个类型构造函数。这就是为什么失败的原因: // Won't compile let foo = 10 |> bigint 我知道我可以创建一个新函数,它接受一个整数并返回一个bigint,然后管道操作符就可以工作了 但是,我不明白为什么会这样: let bar = bigint 10 如果bigint是类型构造函数,为什么不需要new?确切地说,bigint定义为System.Numerics.BigInteger的构造函数的别名在哪里?bigin
bigint
不是一个函数,而是一个类型构造函数。这就是为什么失败的原因:
// Won't compile
let foo = 10 |> bigint
我知道我可以创建一个新函数,它接受一个整数并返回一个bigint
,然后管道操作符就可以工作了
但是,我不明白为什么会这样:
let bar = bigint 10
如果
bigint
是类型构造函数,为什么不需要new
?确切地说,bigint
定义为System.Numerics.BigInteger的构造函数的别名在哪里?bigint是System.Numerics.BigInteger的类型AbService,所以当您键入
let x = bigint 10
实际上,您创建了BigInteger的实例。在F#中,new在构造函数中是可选的,基本上在创建实现IDisposable的类型实例时应该使用它。我不知道
new
是可选的。这里有一个类型缩写列表,但它省略了bigint
:。我知道int64
也是一个类型缩写。但是,我相信还有一个函数int64
。我想知道为什么bigint
是一个类型缩写,而int64
是一个函数。我不知道这是否有原因,因为像“int16”这样的所有其他数字类型都是“类型缩写”和“函数”,而bigint
只是一个“类型缩写”。我可能会猜测,这是因为像“int16”这样的函数首先存在的唯一原因是提供了一种方法来公开基本的IL整数强制转换(例如,conv.i2
),它没有“库”调用,通常通过其他语言的“强制转换”功能向其他语言的用户公开。@Brian,insightful。但我要指出的是,decimal
享有一种转换函数形式,只是一种简单的结构。。。也许bigint
也值得一个位置:)@Brian,Stephen:不管它的价值如何,bool
也有类似的问题,并且可能同时作为别名和函数而受益。此外,您还可以对常量使用类型快捷方式,例如:let foo=10I