Warning: file_get_contents(/data/phpspider/zhask/data//catemap/5/reporting-services/3.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
“究竟是什么?”;bigint";在F#中?_F# - Fatal编程技术网

“究竟是什么?”;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