2009-07-20 29 views

Respuesta

21

Seq.append:

> let x = { 1 .. 5 };; 

val x : seq<int> 

> let y = Seq.append x [9];; // [9] is a single-element list literal 

val y : seq<int> 

> y |> Seq.toList;; 
val it : int list = [1; 2; 3; 4; 5; 9] 
+8

¿Debería quizás agregar que esto no está agregando un elemento a la secuencia, está creando una nueva secuencia con el elemento adicional agregado? – Benjol

+0

y |> Seq.toList ;; – Indy9000

4

Hay también una solución imprescindible ...

> let x = seq {1..5} 
> let y = seq { yield! x; yield 9 } // Flatten the list,then append your element 
> Seq.to_list y;; 
val it : int list = [1; 2; 3; 4; 5; 9] 

Esto puede ser mejor si el problema de fondo es un imperativo uno, y es más natural usar una declaración yield en un ciclo.

let mySeq = seq { for i in 1..10 do yield i };; 
7

También puede utilizar

let newSeq = Seq.append oldSeq (Seq.singleton newElem) 

¿Qué es una ligera modificación de la primera respuesta, pero añade secuencias en lugar de una lista a una secuencia.

dado el siguiente código

let startSeq = seq {1..100} 
let AppendTest = Seq.append startSeq [101] |> List.ofSeq 
let AppendTest2 = Seq.append startSeq (Seq.singleton 101) |> List.ofSeq 
let AppendTest3 = seq { yield! startSeq; yield 101 } |> List.ofSeq 

bucle 10000 ejecuciones los tiempos de ejecución son

Elapsed 00:00:00.0001399 
Elapsed 00:00:00.0000942 
Elapsed 00:00:00.0000821 

Tomar de que lo que se quiere.

Cuestiones relacionadas