java.lang.String不能转换为clojure.lang.IFn
问题描述:
我想将一些数据添加到应用程序引擎数据存储中。这是我的功能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
功能(如电子邮件已经存在,否则返回false返回true)的值在体内打印假的现在,当我运行此,如果isIdExist == true
然后打印假的,但当isIdExist == false
它将数值存储中的值添加到数据存储中,但是会出现此错误。有人能帮助为什么它发生,我在这里想念clojure的概念吗?谢谢
答
我假设db/addUser
返回一个字符串,在这种情况下,你试图调用返回值作为一个函数。它看起来像要执行插入,然后返回“真”,所以你可以使用do
测序两种:
(if (db/isIdExist "users" "email" email)
"false"
(do
(db/addUser email phone roleId status)
"true"))))
答
在Clojure中)))))))
是完全正常的,你看它无处不在,没有引起人们的关注。
另一方面,((
应该脱颖而出,吸引你的目光。它通常意味着:
- 某人正在返回一个函数。
- 该函数应立即运行。
这种模式在任何方面都没有错,只是学会发现它是一种习惯快速读取Clojure代码的有用方法。在这种情况下,它可能意味着有太多的开放(
s在
((db/addUser email phone roleId status) (str "true"))))
非常感谢你@它的工作。 :) –