无法将java.lang.String转换为clojure.lang.IFn
我正在尝试将一些数据添加到app engine数据存储中。这是我的职责无法将java.lang.String转换为clojure.lang.IFn,clojure,clojurescript,compojure,clojure-java-interop,Clojure,Clojurescript,Compojure,Clojure Java Interop,我正在尝试将一些数据添加到app engine数据存储中。这是我的职责 (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")))
(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
函数的值在body中打印false(如果电子邮件已经存在,则返回true,否则为false),现在当我运行此函数时,如果isIdExist==true
则打印false,但当isIdExist==false
时,它会在数据存储中添加值,但给出此错误。有人能帮我解释一下为什么会这样,我在这里遗漏了什么clojure的概念吗?谢谢我假设db/addUser
返回一个字符串,在这种情况下,您试图将返回值作为函数调用。看起来您希望执行插入,然后返回“true”,这样您就可以使用do
对这两个选项进行排序:
(if (db/isIdExist "users" "email" email)
"false"
(do
(db/addUser email phone roleId status)
"true"))))
我假设
db/addUser
返回一个字符串,在这种情况下,您试图将返回值作为函数调用。看起来您希望执行插入,然后返回“true”,这样您就可以使用do
对这两个选项进行排序:
(if (db/isIdExist "users" "email" email)
"false"
(do
(db/addUser email phone roleId status)
"true"))))
在Clojure中,是完全正常的,你可以在任何地方看到它,不必担心
另一方面,(
应该突出并吸引你的眼球。它通常意味着:
- 有人正在返回一个函数
- 该功能应立即运行
(
)
((db/addUser email phone roleId status) (str "true"))))
在Clojure中,是完全正常的,你可以在任何地方看到它,不必担心
另一方面,(
应该突出并吸引你的眼球。它通常意味着:
- 有人正在返回一个函数
- 该功能应立即运行
(
)
((db/addUser email phone roleId status) (str "true"))))