2009-07-20 71 views
9

một câu hỏi đơn giản Tôi không thể tìm thấy câu trả lời cho: cách thêm phần tử vào chuỗi? Ví dụ tôi có một seq và một newElem XElement Tôi muốn nối thêm vào nó.F # Thêm phần tử vào một chuỗi

Cảm ơn

Trả lời

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

Có lẽ nên thêm rằng điều này không thêm phần tử vào chuỗi, nó tạo chuỗi mới với phần tử bổ sung được thêm vào? – Benjol

+0

y |> Seq.toList ;; – Indy9000

4

Ngoài ra còn có một giải pháp cấp bách ...

> 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] 

Đây có thể là tốt hơn nếu các vấn đề tiềm ẩn là một một mệnh lệnh, và nó tự nhiên nhất là sử dụng câu lệnh sản lượng trong một vòng lặp.

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

Bạn cũng có thể sử dụng

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

Đó là một sửa đổi nhỏ của câu trả lời đầu tiên nhưng gắn thêm chuỗi thay vì một danh sách để một chuỗi.

cho đoạn mã sau

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 

looped 10000 hành thời gian chạy là

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

Đưa những từ đó những gì bạn sẽ làm.

Các vấn đề liên quan