“字符串”将可选值转换为字符串。但是,是否有.NET函数将这样的字符串转换回可选值?
let x = Some 3.0
let y = string x // y = "Some(3)"
let z = ?<float> x // z = Some 3.0
答案 0 :(得分:2)
没有内置的。但是您可以编写一个针对许多类型的函数来执行此操作。具有静态成员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