Подтвердить что ты не робот

Каков правильный способ вызова DateTime.TryParse из F #?

Каков правильный способ вызова DateTime.TryParse из F #? Я пытаюсь проверить код из F # interactive, и я не могу понять, как передать изменяемый DateTime во второй аргумент по ссылке. Что такое синтаксис in/out/ref в F #?

Это подпись метода, на которую я смотрю: http://msdn.microsoft.com/en-us/library/ch92fbc1.aspx?cs-save-lang=1&cs-lang=fsharp#code-snippet-1

4b9b3361

Ответ 1

Ответ Криса верен, если вам действительно нужно передать измененный DateTime по ссылке. Однако в F # гораздо более идиоматично использовать способность компилятора обрабатывать конечные параметры out в качестве возвращаемых значений:

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

Здесь первое значение - это возвращаемое значение bool, а второе - назначенный параметр.

Ответ 2

Здесь, как выполнить DateTime.TryParse в F #:

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

Где оператор & находит адрес памяти dt2, чтобы изменить ссылку.

Здесь дополнительная информация о параметре синтаксиса F #.

Ответ 3

Просто для полноты, еще один вариант - использовать ячейки ref, например.

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

Ответ 4

Я нашел еще один способ, кажется, более функциональный стиль (из fooobar.com/info/226577/...)

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

К сожалению, я не могу найти информацию о том, как это работает.