从F#调用DateTime.TryParse的正确方法是什么?

Bud*_*Joe 28 .net f# tryparse

从F#调用DateTime.TryParse的正确方法是什么?我试图从F#interactive测试一些代码,我无法弄清楚如何通过ref将可变的DateTime传递给第二个参数.F#中的输入/输出/参考语法是什么?

这是我正在查看的方法签名:http: //msdn.microsoft.com/en-us/library/ch92fbc1.aspx?cs-save-lang = 1&cs-lang = fsharp#code-snippet-1

kvb*_*kvb 66

如果你真的需要DateTime通过引用传递一个mutable ,那么Chris的答案是正确的.但是,在F#中使用编译器将尾随out参数视为tupled返回值的能力更为惯用:

let couldParse, parsedDate = System.DateTime.TryParse("11/27/2012")
Run Code Online (Sandbox Code Playgroud)

这里,第一个值是bool返回值,而第二个值是指定的out参数.

  • 哦,很漂亮 (4认同)

Chr*_*ris 11

以下是在F#中执行DateTime.TryParse的方法:

let mutable dt2 = System.DateTime.Now
let b2 = System.DateTime.TryParse("12-20-04 12:21:00", &dt2)
Run Code Online (Sandbox Code Playgroud)

&操作人员发现,以修改参考DT2的内存地址.

这是关于F#参数syntaxt 的一些附加信息.

  • 这不是首选方式,请不要在那里使用mutable dt2 (3认同)
  • @Alex,OP希望使用可变的DateTime作为第二个参数.我同意你可以更清楚地调用DateTime.Parse,但这不是问的问题. (2认同)

Mar*_*cus 9

仅仅为了完整性,另一种选择是使用ref cell,例如

let d = ref System.DateTime.MinValue
if (System.DateTime.TryParse("1/1/1", d)) then
   // ...
Run Code Online (Sandbox Code Playgroud)


por*_*ion 6

我找到了另一种方法,它似乎更实用的风格(来自/sf/answers/346553441/

match System.DateTime.TryParse "1-1-2011" with
| true, date -> printfn "Success: %A" date
| _ -> printfn "Failed!"
Run Code Online (Sandbox Code Playgroud)

不幸的是,我找不到任何有关其工作原理的信息。