【发布时间】:2019-03-13 20:23:12
【问题描述】:
我们有一个函数将 Int32.TryParse 之类的东西从使用 byref 转换为使用 Option 作为返回值。
let inline ToOptionFunc refFunction x =
match refFunction x with
| true, value -> Some value
| false, _ -> None
像这样的东西停止在 .NET Core 中使用 TryParse 的新重载进行编译:
let Int32TryParse (x:string) =
ToOptionFunc Int32.TryParse x // A unique overload for method 'TryParse' could not be determined (...)
我尝试了很多东西,但不小心把它写成这样:
let Int32TryParse (x:string) =
x |> ToOptionFunc Int32.TryParse
我只是不明白为什么这个编译而前者没有。
【问题讨论】:
-
你为什么要转换
Int32.TryParse?它已经可以像在您的第一个代码块中一样直接使用。 -
所以它在 F# 代码中表现得更好。例如
tryParse >> Option.map -
啊,对不起,我错过了那部分。
标签: f#