2013-03-05 24 views
6

Sau đây sẽ làm việc:Làm thế nào để lập bản đồ qua chuỗi các phương pháp Java được thực thi

(map #(%1 "21") [identity]) 

Tuy nhiên đoạn mã sau thất bại

(map #(%1 "21") [.toString]) 

Làm thế nào để tạo ra một seq/bộ sưu tập các phương pháp Java?

+1

Bạn đã có câu trả lời, nhưng tôi chủ yếu quan tâm đến các trường hợp sử dụng mà dẫn bạn đặt câu hỏi. Tôi dường như không thể tìm thấy một. Tôi muốn 'comp' chúng lại với nhau để xây dựng một hàm để thực hiện. –

Trả lời

10

Phương pháp Java không phải là công dân hạng nhất như chức năng trong clojure. Bạn không thể chuyển các phương thức java làm tham số, trả về hoặc lưu trữ trong các biến và các bộ sưu tập. Nhưng bạn có thể tạo hàm bằng memfn hay chỉ là chức năng ẩn danh mà kết thúc tốt đẹp ban đầu gọi phương thức

(map #(%1 21) [(memfn toString)]) 
=> ("21") 

(map #(%1 21) [#(.toString %)]) 
=> ("21") 
Các vấn đề liên quan