una pregunta simple No puedo encontrar una respuesta a: cómo agregar un elemento a una secuencia? Por ejemplo, tengo un seq y un nuevo Elem XElement que me gustaría adjuntar a él.F # Agregar un elemento a una secuencia
Gracias
una pregunta simple No puedo encontrar una respuesta a: cómo agregar un elemento a una secuencia? Por ejemplo, tengo un seq y un nuevo Elem XElement que me gustaría adjuntar a él.F # Agregar un elemento a una secuencia
Gracias
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]
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 };;
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.
¿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
y |> Seq.toList ;; – Indy9000