2014-01-20 57 views
0

是否可以將函數的參數聲明爲原子?將函數的參數聲明爲原子

例如,

(defn make-withdraw [(atom balance)] 
    (fn [amount] 
    (if (>= @balance amount) 
     (do (swap! balance #(- % amount)) @balance) 
     "Insufficient funds") 
)) 

謝謝!

回答

3

Clojure是一種動態類型語言,所以參數就是傳遞給它的任何東西,在函數內部如何使用它就成了重中之重。

所以只是通過一個原子的功能和你設置去:

(make-withdraw (atom 1000)) 

或創建原子的make-withdraw功能裏面有let

(defn make-withdraw 
    [balance] 
    (let [state (atom balance)] 
    (fn [amount] 
     (if (>= @state amount) 
     (do (swap! state #(- % amount)) @state) 
     "Insufficient funds")))) 
+0

或化妝撤! – Hendekagon