What is the correct way to call DateTime.TryParse from F#?

[亡魂溺海] 提交于 2019-11-30 06:15:58

Chris's answer is correct if you really need to pass a mutable DateTime by reference. However, it is much more idiomatic in F# to use the compiler's ability to treat trailing out parameters as tupled return values:

let couldParse, parsedDate = System.DateTime.TryParse("11/27/2012")

Here, the first value is the bool return value, while the second is the assigned out parameter.

Here's how to execute DateTime.TryParse in F#:

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

Where the & operator finds the memory address of dt2 in order to modify the reference.

Here's some additional information on F# parameter syntaxt.

Just for the sake of completeness, yet another option is to use ref cells, e.g.

let d = ref System.DateTime.MinValue
if (System.DateTime.TryParse("1/1/1", d)) then
   // ...

I've found one more way, it seems more functional style (from https://stackoverflow.com/a/4950763/1349649)

match System.DateTime.TryParse "1-1-2011" with
| true, date -> printfn "Success: %A" date
| false, _ -> printfn "Failed!"

Unfirtunately, I can't find any information about how it works.

标签
易学教程内所有资源均来自网络或用户发布的内容,如有违反法律规定的内容欢迎反馈
该文章没有解决你所遇到的问题?点击提问,说说你的问题,让更多的人一起探讨吧!