當一個負值傳遞給它的x參數時,它一直嘮叨我如何在函數中返回一個正值。我的想法是,兩個負值相乘會產生一個正值,但這似乎相當混亂,因爲函數中任何地方都沒有發生乘法運算。當負值傳遞給此abs函數時,Clojure如何產生正值?
有人能給我詳細的解釋爲什麼傳遞給x的負值返回正值嗎?
(def abs
(fn [x]
(cond (> x 0) x
(= x 0) 0
(< x 0) (- x))))
(abs -10) -> 10
的代碼在書中找到SICP ABS功能的變化,但用Clojure寫的。
親切的問候
僅供參考,Clojure否定,pos?和零?功能。另外,您可以使用Java interop來調用Math/abs。例如,(Math/abs -10)返回10. – miner49r
請注意,在Clojure數字塔中,Math/abs不適用於所有數值類型。 – NielsK
第3行的右括號應該移到最後。編輯修復?這似乎是一個錯字,而不是與你的問題有關。 –