Tôi đang làm việc cách của mình thông qua labrepl và tôi thấy một số mã sau mô hình này:clojure: (áp dụng fn coll) vs (áp dụng # (áp dụng fn% &) coll)
;; Pattern
(apply #(apply f %&) coll)
;; Concrete example
user=> (apply #(apply + %&) [1 2 3 4])
10
này có vẻ là tương đương với mẫu này:
;; Pattern
(apply f coll)
;; Concrete example
user=> (apply + [1 2 3 4])
10
Các mẫu này có tương đương không? Nếu không, sự khác biệt là gì và khi nào bạn sẽ sử dụng cái kia?
Tôi đã lấy mẫu cũ từ step function trong phòng thí nghiệm di động-automata của labrepl:
(defn step
"Advance the automation by one step, updating all cells."
[board]
(doall
(map (fn [window]
(apply #(apply map brians-brain-rules %&)
(doall (map torus-window window))))
(torus-window board))))
Cập nhật: Tôi đã thêm một ví dụ cụ thể của mỗi mô hình để giúp làm cho câu hỏi rõ ràng hơn.
Đồng ý. Tôi nghĩ có lẽ tham số có thể tạo ra sự khác biệt, nhưng '(áp dụng # (áp dụng (fn [c] (bản đồ + c [1 1 1]))% &) [[-1 -1 -1]])' và ' (áp dụng (fn [c] (bản đồ + c [1 1 1])) [[-1 -1 -1]]) 'là tương đương. – noahlz