>"string"将可选值转换为字符串。但是,是否有 .NET 函数可以将此类字符串转换回可选值?
let x = Some 3.0
let y = string x // y = "Some(3)"
let z = ?<float> x // z = Some 3.0
没有内置的。但是你可以编写一个函数来为相当多的类型执行此操作。具有静态成员的任何类型TryParse : string * byref<T> -> bool
处理以下内容,其中包括所有数字类型、bool
、DateTime
等:
let inline tryParse< ^T when ^T : (static member TryParse : string * byref< ^T> -> bool)> (s: string) =
let mutable res = Unchecked.defaultof< ^T>
if (^T : (static member TryParse : string * byref< ^T> -> bool)(s, &res)) then
Some res
else
None
tryParse<float> "3.45" // => Some 3.45
tryParse<float> "test" // ==> None