2008-12-23 8 views
7

Sé que la lista f # no es la misma en la lista C#. ¿Qué debo hacer para poder pasar una lista de entradas desde una aplicación C# a una biblioteca f #? Me gustaría poder utilizar la coincidencia de patrones en los datos una vez que estén en el código f #.¿Qué puedo hacer para pasar una lista de C# a F #?

Respuesta

3

Así es como terminé haciéndolo.

El código FSharp:

let rec FindMaxInList list = 
    match list with 
    | [x] -> x 
    | h::t -> max h (FindMaxInList t) 
    | [] -> failwith "empty list" 

let rec FindMax (array : ResizeArray<int>) = 
    let list = List.ofSeq(array) 
    FindMaxInList list 

El código C de Sharp:

List<int> myInts = new List<int> { 5, 6, 7 }; 
    int max = FSModule.FindMax(myInts); 
0

Puede hacer referencia a ensamblajes C# desde proyectos F #. Exponga su lista a través de un ensamblaje al que se hace referencia.

8

Puede utilizar

Seq.toList : IEnumerable<'a> -> list<'a> 

para convertir cualquier IEnumerable<'a>seq a una lista F #. Tenga en cuenta que las listas F # son inmutables; si desea trabajar con la lista mutable, no necesita hacer nada especial, pero no podrá usar la coincidencia de patrones. O bien, puede definir patrones activos para System.Collections.Generic.List<'a>; es solo una mala idea

+0

Sólo me preguntaba, pero ¿por qué no sería una persona que desee escribir algunos patrones activos que operan en las listas de C#? – Juliet

1

Puede pasar una secuencia de entradas; básicamente es cualquier cosa que admita IEnumerable<int>.

Cuestiones relacionadas