2016-11-22 8 views
0

アプリエンジンデータストアにデータを追加しようとしています。これは私が(メールがすでにそうでない場合はfalse存在する場合はtrueを返します)isIdExist関数の値に応じて体内で偽印刷したい。ここjava.lang.Stringをclojure.lang.IFnにキャストできません

(defn createUser [email phone roleId status] 
    (println (db/isIdExist "users" "email" email)) 
    (if (db/isIdExist "users" "email" email) 
    (str "false") 
    ((db/addUser email phone roleId status) (str "true")))) 

私の関数である私はこれを実行すると、今、isIdExist == trueはそれが偽印刷した場合が、 isIdExist == falseの場合、データストアに値が追加されますが、このエラーが発生します。誰かがなぜ起こっているのかお手伝いできますか?そして、私がここで忘れているクロージャの概念は何ですか?ありがとう

答えて

5

私はdb/addUserと仮定します。その場合は戻り値を関数として呼び出そうとしています。あなたは2を配列決定するdoを使用できるように「true」を返し、その後の挿入を実行するように見えます:Clojureの)))))))

(if (db/isIdExist "users" "email" email) 
    "false" 
    (do 
    (db/addUser email phone roleId status) 
    "true")))) 
+0

ありがとうございました@それは働いていただきありがとうございます。 :) –

4

は完全に正常であり、あなたは、どこでも心配のための原因を、それを見ていません。

一方、((は目立つように目を引くべきです。それは非常に多くを意味します:

  • 誰かが関数を返しています。
  • この機能はすぐに実行する必要があります。

このパターンは間違っていませんが、このパターンはClojureコードをすばやく読み込むのに便利な方法です。この場合は、あまりにも多くの開口部があることを意味する可能性があります

((db/addUser email phone roleId status) (str "true")))) 
関連する問題