Warning: file_get_contents(/data/phpspider/zhask/data//catemap/4/fsharp/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
.net 选项的F#元组。无作为空值的元组进行计算_.net_F# - Fatal编程技术网

.net 选项的F#元组。无作为空值的元组进行计算

.net 选项的F#元组。无作为空值的元组进行计算,.net,f#,.net,F#,有人能告诉我为什么这个F#表达式: (Option<int*int>.None, Option<int*int>.None) 当 (Option<int*int>.None 它是(null,null)而不是(None,None),这一事实的哪一部分令人惊讶 这只是打印None值工作方式的产物。尝试fst it,您将看到它仍然是一个合适的选项值 您之所以会看到这一点,是因为出于性能原因,None值被编译为空值,即使在F#中使用它们(大部分)是透明的。通过使用

有人能告诉我为什么这个F#表达式:

(Option<int*int>.None, Option<int*int>.None)

(Option<int*int>.None

它是
(null,null)
而不是
(None,None)
,这一事实的哪一部分令人惊讶

这只是打印
None
值工作方式的产物。尝试
fst it
,您将看到它仍然是一个合适的选项值

您之所以会看到这一点,是因为出于性能原因,
None
值被编译为空值,即使在F#中使用它们(大部分)是透明的。通过使用编译标志标记类型,可以在类型中获得相同的行为

(Option<int*int>.None
val it : (int * int) option = None