Вам необходимо использовать перегрузку, которая принимает NumberStyles
в качестве второго аргумента и CultureInfo
в качестве третьего аргумента.Поскольку это метод .NET, аргументы являются кортежными (за исключением того, что компилятор F # превращает последний byref
аргумент в возвращаемый тип):
let foo str =
match Decimal.TryParse(str, NumberStyles.None, CultureInfo.InvariantCulture) with
| (true, result) -> Some result
| (false, _) -> None
Подпись типа метода (как показано в VisualПодсказка для студии):
Decimal.TryParse (s: строка, стиль: NumberStyles, поставщик: IFormatProvider, результат: byref ): bool
Когдаиспользуя метод с сопоставлением с образцом, компилятор превращает все byref
аргументы с конца списка аргументов в (последние) элементы возвращаемого кортежа, но сохраняет параметры как кортеж, поэтому вы должны вызывать метод, используяTryParse(foo, bar)
нотация.