Tôi muốn đồng thời khớp với một khóa cụ thể trong bản đồ, và chụp phần còn lại của bản đồ đó. Tôi đã hy vọng một cái gì đó như thế này sẽ làm việc:Elixir: Chụp phần còn lại của bản đồ bằng cách sử dụng đối sánh mẫu
iex(10)> %{"nodeType" => type | rest} = %{"nodeType" => "conditional", "foo" => "bar"}
** (CompileError) iex:10: cannot invoke remote function IEx.Helpers.|/2 inside match
Mục đích là viết một tập hợp các chức năng lấy bản đồ, khớp mẫu trên một trong các trường của bản đồ và thực hiện một số biến đổi trên phần còn lại của bản đồ.
def handle_condition(%{"nodeType" => "condition" | rest}) do
# do something with rest
done
def handle_expression(%{"nodeType" => "expression" | rest}) do
# do something with rest
done
Nhưng có vẻ như tôi cần callee để vượt qua nodeType riêng trừ khi tôi thiếu thứ gì đó.
Tôi muốn cú pháp này. Tôi vừa định hỏi cùng một câu hỏi và đã đoán đúng chính xác cú pháp 'def update_document (% {id: id, sửa đổi: sửa đổi | phần còn lại}) làm # couchdb ở đây end' –
Lưu ý chung, trường ' nodeType' cho biết bạn có thể được phục vụ tốt hơn bằng cách sử dụng 'struct' trái ngược với một bản đồ đơn thuần. Xem http://elixir-lang.github.io/getting-started/structs.html Nếu không biết trường hợp sử dụng chính xác của bạn, tôi không thể khẳng định chắc chắn, nhưng cách sử dụng được mô tả là một mùi mã với tôi bạn không sử dụng công cụ tốt nhất có sẵn. –