Tôi định nghĩa một hàm, có hai tham số - ánh xạ và một khóa. Điều quan trọng là tham khảo từ các tham số bản đồ phân hủydefn vs let liên quan đến sự phân hủy
(defn myfunc [{v k} k]
v)
khi tôi gọi:
(myfunc {:a 10} :a)
Nó ngạc nhiên sản xuất dự kiến kết quả: 10
điều tương tự trong các let:
(let [{v k} {:a 10} k :a] v)
không thành công, vì k không được xác định tại thời điểm, khi phần đầu tiên được đánh giá.
Câu hỏi của tôi là: tại sao việc phân tách bên trong các tham số chức năng hoạt động khác so với phân tách trong các biểu thức cho phép?
bây giờ câu hỏi là, nếu chênh lệch đó đã được coi là một lỗi hoặc như là một tính năng ... – aav
tôi sẽ nói nếu người ta biết rằng sự phá hoại xảy ra bên trong cơ thể của hàm, nó không đáng ngạc nhiên, do đó không phải là lỗi. Nhưng tôi nghĩ rằng thực tế này có thể được giải thích tốt hơn ở những nơi thích hợp - nếu tôi nhớ chính xác Niềm vui của Clojure, chẳng hạn, không thực sự hiểu được điều này. – Paul
điều thú vị (nhưng không đáng ngạc nhiên) là anh ta sẽ không làm việc: (defn myfunc [{v k} {k: k1}] v) – aav