簡體   English   中英

Clojure cond還是如果?

[英]Clojure cond or if?

目前,我正在編程一張地圖,該地圖將從一個id中提取一定數量的錢並將其轉移給另一個id,但是每當我添加一個if或cond語句以確保它們的余額時,我總是收到發送過多參數錯誤的信息。 如果我使用cond它說cond需要偶數形式。 任何幫助,將不勝感激

碼:

 (defn transfer[ledger from-id to-id amt]
    (dosync
        (let [from-id (get @ledger from-id)]
        (let [to-id (get @ledger to-id) ]
            (if from-id 
                (if to-id
                    (let [bal1 (get from-id :balance)]
                    (let [bal2 (get to-id :balance)]
                        (cond (< amt bal1)
                            (alter bal1 - amt)
                            (alter bal2 + amt)
                        :else "Too much"

                    )       
            nil
                nil
            ))))))))

這與condif ,而與“如何將多個s-exp分組為一個並按順序評估它們”有關。

do如下所示:

(defn transfer[ledger from-id to-id amt]
  (dosync
   (let [from-id (get @ledger from-id)
         to-id (get @ledger to-id)]
     (if (and from-id to-id)
       (let [bal1 (:balance from-id)
             bal2 (:balance to-id)]
         (if (< amt bal1)
           (do
             (alter bal1 - amt)
             (alter bal2 + amt))
           "Too much"))))))

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM