您好,我目前正在尝试使用活动的模式和Int.TryParse方法将字符串解析为Int。使用2012年的旧示例,它以前的工作方式如下:
let (|Int|_|) str =
match System.Int32.TryParse str with
| true,int -> Some int
| _ -> None
Run Code Online (Sandbox Code Playgroud)
但是现在我收到一条错误消息,告诉我无法选择TryParse()的正确重载。将str注释为字符串,错误仍然存在。预先感谢,我希望你们中的任何一个可以帮助我解决这个简单的问题。
一些其他信息:我正在尝试使用FSharp.Core 4.5.2和.Net Core 2.1。
错误:
FS0041无法基于此程序点之前的类型信息确定方法“ TryParse”的唯一重载。可能需要类型注释。候选:Int32.TryParse(s:ReadOnlySpan <char>,结果:byref <int>):bool,Int32.TryParse(s:字符串,结果:byref <int>):bool
在 Reddit上Jestar342的帮助下发现了我自己的错误:
let (|Int|_|) (str:string) =
match System.Int32.TryParse str with
| true,int -> Some int
| _ -> None
Run Code Online (Sandbox Code Playgroud)
将 str 更改为 (str:string) 可修复此错误。
还可以考虑使用更惯用的 F# 内置int函数。
就像是...
let tryParseInt s =
try
s |> int |> Some
with :? FormatException ->
None
Run Code Online (Sandbox Code Playgroud)
归档时间: |
|
查看次数: |
321 次 |
最近记录: |