Cho phép nói rằng tôi có danh sách loại số nguyên [1; 2; 3; 4; 5; 6; 7; 8] và tôi muốn mẫu khớp với ba phần tử đầu tiên cùng một lúc. Có cách nào để làm điều này mà không có câu lệnh kết hợp lồng nhau không? Ví dụ:Mẫu hình Ocaml khớp với nhiều phần tử trong một danh sách cùng một lúc
, có thể làm như thế này không?
let rec f (x: int list) : (int list) =
begin match x with
| [] -> []
| [a; b; c]::rest -> (blah blah blah rest of the code here)
end
tôi có thể sử dụng phương pháp lồng nhau lâu, đó sẽ là:
let rec f (x: int list) : (int list) =
begin match x with
| [] -> []
| h1::t1 ->
begin match t1 with
| [] -> []
| h2::t2 ->
begin match t2 with
| [] -> []
| t3:: h3 ->
(rest of the code here)
end
end
end
Cảm ơn!
cool, thanks! Và cho phép nói cho (blah blah blah phần còn lại của mã ở đây) Tôi muốn trả lại tất cả mọi thứ ngoại trừ yếu tố "a." tôi sẽ chỉ làm b @ c @ nghỉ ngơi? – chesspro
bạn có thể khớp với 'a :: ((b :: c :: phần còn lại) dưới dạng tl)' và sau đó bạn có thể sử dụng 'tl' mà không cần tạo lại các phần tử đầu của danh sách. – nlucaroni
không biết điều đó, cảm ơn! – chesspro