Есть ли функция .NET для анализа / преобразования строки в необязательное значение? - PullRequest
0 голосов
/ 17 октября 2018

«строка» преобразует необязательное значение в строку.Но есть ли функция .NET для преобразования такой строки обратно в необязательное значение?

let x = Some 3.0
let y = string x   // y = "Some(3)"
let z = ?<float> x // z = Some 3.0

1 Ответ

0 голосов
/ 17 октября 2018

Нет встроенного.Но вы можете написать функцию, которая делает это для нескольких типов.Любой тип, имеющий статический член 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
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...