Я все еще немного новичок в F #, я вижу себя борющимся с некоторыми сигнатурами функций, когда компилятор не может правильно определить тип. В следующем примере компилятор полагал, что тип функции для TryParse
был string -> string
, поэтому мне пришлось создать это определение с лямбдой справа.
type SocialAccount =
| FacebookAccount
| UnknownAccount
type SocialAccount with
static member TryParse:(string -> SocialAccount option) = fun s ->
match s with
| "FACEBOOK" -> Some FacebookAccount
| _ -> None
Я считаю, что лямбда-выражение после равного я думаю, что это немного уродливо, и разделение имен arg от типов делает его немного нечитаемым. Кроме того, создание типа для каждой сложной функции создает переполненные пространства имен.
Неужели нет способа определить функцию и указать ее тип возвращаемого значения? Я ищу что-то вроде следующего кода (который является неправильным):
static member TryParse:(s:string -> SocialAccount option) =
match s with
| "FACEBOOK" -> Some FacebookAccount
| _ -> None
Все предложения приветствуются. В том числе креативные.