2015-08-06 17 views
7

Ruby cung cấp phương thức #tap, cho phép bạn thực hiện biến và chạy mã trên biến đó, nhưng sau đó trả lại biến ban đầu thay vì kết quả biểu thức của bạn, nghĩa là:Có tương đương Clojure của phương thứC#tap của Ruby

def number 
    5.tap { |x| print x } # Prints 5, and returns 5 
end 

Có chức năng nào được tích hợp trong Clojure có thể cung cấp chức năng này không?

Trả lời

9

Bạn đang tìm kiếm doto. Dưới đây là ví dụ của bạn, được viết lại bằng cách sử dụng:

(doto 5 
    println) 

Macro hoạt động tương tự như macro -> ở chỗ nó vượt qua giá trị thông qua một loạt hàm. Điểm khác biệt chính là nó trả về giá trị ban đầu mà bạn đã chuyển vào, thay vì giá trị được trả về bởi hàm cuối cùng.

Các vấn đề liên quan