Tôi đã cố gắng làm việc này với báo giá, trích dẫn quote, eval và bất kỳ điều gì khác mà tôi có thể nghĩ đến, nhưng không may mắn cho đến nay. Tôi hiểu lý do tại sao nó không hoạt động - nó được xem như là một bản đồ, và nó đang cố gắng để đánh giá a
, b
và c
- chỉ cần không làm thế nào để có được nó.Lưu trữ bản đồ phá hủy để sử dụng sau này
(def destructor {a :a b :b c :c})
; CompilerException java.lang.RuntimeException: Unable to resolve symbol: a in this context, compiling:(:1:15)
(let [destructor my-map]
'etc)
Tôi có một bản đồ có liên quan đến phá hoại mà tôi đang cân nhắc sử dụng nhiều lần, vì vậy, có vẻ là một ý tưởng hay để bỏ nó đi đâu đó. Có lẽ có những cách tốt hơn để đi về nó?
Các funny-tìm '~' 'trong mệnh đề let là a, b, và cd không nhận được không gian tên đủ điều kiện theo cú pháp-trích dẫn. Tôi nghĩ điều đó là cần thiết, nhưng hiện tại tôi không có máy tính thực sự, vì vậy nếu ai đó thấy rằng nó không cảm thấy tự do để chỉnh sửa. – amalloy
Rất đẹp. Tôi không thể sử dụng ': keys' (tốt để xem nó như là một ví dụ, mặc dù), như tôi có" một bản đồ destructuring khá tham gia "(tức là của nhiều cấp độ), nhưng trao đổi trong bản đồ của tôi hoạt động tuyệt vời. Tôi đã chơi với việc sử dụng macro một chút, nhưng - mặc dù đã thành công với họ nhiều lần - tôi đoán tôi vẫn không có cái đầu hoàn toàn xoay quanh mọi thứ và nhận được một thứ hoàn toàn mới, được biến đổi hoàn toàn. Cảm ơn! –
@amalloy: Đối với hồ sơ, bạn nói đúng - '~ '' là cần thiết. Tôi đã thử nghiệm nó, và nó hoạt động như là, nhưng việc loại bỏ '~ '' gây ra một 'java.lang.RuntimeException: Không thể để tên đủ điều kiện: user/a'. –