2016-08-06 23 views

回答

6

在clojure中,作爲函數調用的任何東西都必須實現clojure.lang.IFn接口。該界面包含稱爲invoke的重載方法。函數在Clojure中名列前茅,所以當你說(def square (fn [x] (* x x)))時,square被分配給實現IFn的類的實例。

所以總結一下:在Clojure中調用一個函數會導致在一個對象上調用一個方法的代價。

4

Clojure功能實現the IFn interface,它提供了帶有許多不同簽名的invoke()調用。除非傳遞超過20個參數,否則在使用可變參數簽名的情況下,它與JVM中任何其他方法調用一樣快。

相關問題