您好我已经写了以下代码.
我的目标是编写一个名为getWoeid的函数,它将检查命令行参数是否是一个包含1个元素的数组,并且该元素是一个整数.
我的代码有效......但是我两次调用TryParse方法......我想知道是否有一种方法可以只调用一次.
另外,您是否可以确认使用模式匹配来验证命令行参数的方式是否正确?
open System;
open System.Xml;
let getWoeid args =
let retVal = 0
match args with
| [|a|] when fst (Int32.TryParse(a)) = true ->
printfn "%s" "Starting the processing for woeid "
Some(snd (Int32.TryParse(a)))
| _ -> failwith "Usage XmlRead WOEID"
[<EntryPoint>]
let main args =
let woeid=
try
getWoeid args
with
| Failure (msg) -> printfn "%s" msg; None
0
Run Code Online (Sandbox Code Playgroud)
des*_*sco 12
您可以定义活动模式:
let (|Int|_|) s =
match System.Int32.TryParse s with
| true, v -> Some v
| _ -> None
let getWoeid args =
match args with
| [|Int v|] -> Some v
| _ -> None
Run Code Online (Sandbox Code Playgroud)
您还可以传递一个byref参数,TryParse而不是允许它进行tuplized.
let getWoeid args =
let mutable i = 0
match args with
| [|s|] when Int32.TryParse(s, &i) -> Some i
| _ -> None
Run Code Online (Sandbox Code Playgroud)