Как определить метод расширения в списках F #?Метод расширения в списке?
Наивная попытка, как это приводит к ошибке:
type list with
member this.abc() = 100
Как определить метод расширения в списках F #?Метод расширения в списке?
Наивная попытка, как это приводит к ошибке:
type list with
member this.abc() = 100
Правильный синтаксис:
type List<'a> with
member this.abc() = 100
Вы можете использовать полное имя Microsoft.FSharp.Collections.List<'a>
, а также, но тип аббревиатура list<'a>
не может использоваться.
Это говорит о том, что использование функций модуля более идиоматично. Вы должны сделать функцию модуля, чтобы легко комбинировать с другими функциями через трубу (|>)
:
module List =
let abc (xs: _ list) = 100
type Microsoft.FSharp.Collections.List<'T> with
member x.IsNotEmpty() = not (List.isEmpty x)
let xs = [1]
xs.IsNotEmpty
Спасибо. А также для информации об идиоматическом коде. – dharmatech