5
我有一個函數,它接受一個函數和一個數,並返回對數的函數的應用,以及一個立方體功能:傳遞函數作爲參數用Clojure
(defn something [fn x]
(fn x))
(defn cube [x]
(* x x x))
當我調用該函數如下它的工作原理:
(something cube 4)
但這返回一個錯誤:
(something Math/sin 3.14)
然而,這個工程:
(something #(Math/sin %) 3.14)
什麼是解釋?
謝謝,現在我明白了。實際上,當這種混亂髮生時,我試圖理解宏。你能向我解釋這一行嗎? - '由於宏不評估它們的參數,可以將未加引號的函數名稱傳遞給它們,並且可以構造具有參數的函數調用。函數定義不能做到這一點,而是必須傳遞匿名函數,將函數調用到函數中。 – Pranav 2011-04-20 06:56:10
我的困惑是,我已經明確地將一個沒有引號的函數'cube'傳遞給'something',並且工作正常。 – Pranav 2011-04-20 06:59:26
你可以問這是一個真正的問題,而不是在評論中?這裏的格式非常暗淡,我不想爲完全不相關的問題添加「另一個答案」。 – amalloy 2011-04-20 07:38:39