我们有一个函数,将类似 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
?它已经可以像你第一个代码块中那样直接使用了。 - TeaDrivenDevtryParse >> Option.map
- Asik