(fn [x] (+ x 5))
và #(+ % 5)
- Hai là hoàn toàn tương đương, sau này chỉ sử dụng dispatch macro để làm cho đoạn code ngắn gọn hơn một chút. Đối với các hàm ngắn, cú pháp #()
thường được ưu tiên và cú pháp (fn [x])
tốt hơn cho các hàm dài hơn một chút. Ngoài ra, nếu bạn có các chức năng ẩn danh lồng nhau, bạn không thể sử dụng #()
cho cả hai vì sự mơ hồ này sẽ gây ra.
(fn add-five [x] (+ x 5))
- giống như hai trường hợp trên, ngoại trừ tên có: bổ trợ. Điều này đôi khi có thể hữu ích, như khi bạn cần thực hiện một cuộc gọi đệ quy đến chức năng của bạn. *
(partial + 5)
- Trong clojure, +
là một hàm variadic. Điều này có nghĩa là nó có thể chấp nhận bất kỳ số lượng đối số nào. (+ 1 2)
và (+ 1 2 3 4 5 6)
là cả hai hình thức hoàn toàn hợp lệ. partial
đang tạo một hàm mới giống hệt với +
, ngoại trừ đối số đầu tiên luôn là 5. Do đó, ((partial + 5) 3 3 3)
là hợp lệ. Bạn không thể sử dụng các biểu mẫu khác trong trường hợp này.
* Khi thực hiện cuộc gọi đệ quy từ vị trí đuôi, bạn nên sử dụng recur
, tuy nhiên điều này không phải lúc nào cũng có thể.