gpt4 book ai didi

F#:Nullable 支持

转载 作者:行者123 更新时间:2023-12-03 11:16:34 24 4
gpt4 key购买 nike

在 F# 中使用 Nullable 的正确方法是什么?

目前我正在使用它,但它看起来非常困惑。

let test (left : Nullable<int>) = if left.HasValue then left.Value else 0

Console.WriteLine(test (new System.Nullable<int>()))
Console.WriteLine(test (new Nullable<int>(100)))

let x = 100
Console.WriteLine(test (new Nullable<int>(x)))

最佳答案

恐怕在 F# 中没有可空类型的语法糖(不像在 C# 中,您只需将 ? 附加到类型)。所以是的,你在那里展示的代码看起来非常冗长,但这是使用 System.Nullable<T> 的唯一方法。输入 F#。

但是,我怀疑您真正想要使用的是 option types . MSDN页面上有一些不错的例子:

let keepIfPositive (a : int) = if a > 0 then Some(a) else None


open System.IO
let openFile filename =
try
let file = File.Open (filename, FileMode.Create)
Some(file)
with
| exc -> eprintf "An exception occurred with message %s" exc.Message; None

显然更好用!

选项基本上实现了 F# 中可空类型的作用,我认为您确实希望使用它们而不是可空类型(除非您正在与 C# 进行互操作)。实现上的区别在于,选项类型是由 Some(x) 的可区分联合形成的。和 None , 而 Nullable<T>是 BCL 中的一个普通类,在 C# 中有一点语法糖。

关于F#:Nullable<T> 支持,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/946815/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com