Tôi đã điều sau đây:Làm thế nào để ánh xạ một chuỗi các công đoàn phân biệt đối xử (trong đó tất cả các mục của cùng một trường hợp) lên một chuỗi các mục của kiểu vụ án?
type union1 =
| Case1 of string
| Case2 of int
let union1s = seq { for i in 1..5 do yield case2 i }
Làm thế nào để thay đổi union1s
đến một chuỗi các loại seq<int>
?
Cái gì như:
let matchCase item =
match item with
| Case1 x -> x
| Case2 x -> x
let case2s = Seq.map matchCase union1s
nỗ lực này không làm việc vì matchCase không thể trở về hai loại khác nhau.
Những câu trả lời gợi ý có cùng một vấn đề (nếu tôi hiểu đúng)
let matchCaseOpt = function
| Case1 x -> Some x
| Case2 x -> Some x
| _ -> None
let case2s = Seq.choose matchCaseOpts unions1s
Khái niệm Một số x hy vọng hy vọng gõ Lựa chọn chuỗi trong trận đấu cho Trường hợp2
tôi đã giải quyết tình huống sử dụng cụ thể của tôi bằng cách sử dụng DU của chuỗi.
type Union1s =
| Case1s of seq<string>
| Case2s of seq<int>
Xin lưu ý đó không phải là câu trả lời được đề xuất. Trường hợp 1 sai, nên là Không. – Gustavo