De acuerdo con this post, F # admite métodos de extensión en instancias de objetos y clases estáticas. Por ejemplo:Métodos de extensión estática en el módulo Seq
module CollectionExtensions =
type System.Linq.Enumerable with
static member RangeChar(first:char, last:char) = {first .. last}
open ExtensionFSharp.CollectionExtensions
Si escribo System.Linq.Enumerable.
, el método estático RangeChar
aparece en la ventana de mi Intellisense.
Quiero agregar un método estático, for_alli
, al módulo Seq. He modificado el siguiente código anterior de la siguiente manera:
module SeqExtensions =
type Microsoft.FSharp.Collections.Seq with (* error on this line *)
static member for_alli f l =
l
|> Seq.mapi (fun i x -> i, x)
|> Seq.for_all (fun (i, x) -> f i x)
Aunque ambos fragmentos de código tienen la misma estructura, SeqExtensions
no compila. F # resalta la palabra Seq
y devuelve el error "El tipo 'Seq' no está definido".
¿Cómo creo métodos de extensión estáticos en el módulo Seq?
Yo sabía que tenía que ser simple, gracias :) – Juliet
Ver: [extensiones de tipos (F #)] (https://msdn.microsoft.com/en-us/library/dd233211.aspx) y observe la diferencia entre 'extensión intrínseca' y' extensión opcional'. –