Trong Common Lisp bạn có thể làm điều này:luận Clojure từ khóa
(defun foo (bar &key baz quux)
(list bar baz quux))
(foo 1 :quux 3 :baz 2) ; => (1 2 3)
Clojure không có đối số từ khóa. Một giải pháp thay thế là:
(defn foo [bar {:keys [baz quux]}]
(list bar baz quux))
(foo 1 {:quux 3 :baz 2}) ; => (1 2 3)
Đó là quá nhiều dấu ngoặc ôm phải nhập và đọc mọi lúc. Nó cũng yêu cầu một bản đồ băm rõ ràng để được truyền vào như một đối số chứ không phải là một danh sách phẳng.
Clojure thành ngữ nhất tương đương với các đối số từ khóa không giống ai đó đã đặt ra dấu chấm câu?
Kể từ khi câu hỏi này là từ khóa hoạt động cuối cùng destructuring ràng buộc đã được thêm vào Clojure. Tôi đã cung cấp một câu trả lời để cho biết điều này. –
@Brian bạn nên cân nhắc cập nhật câu trả lời được chấp nhận. –