Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/batch-file/5.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
无法将java.lang.String转换为clojure.lang.IFn_Clojure_Clojurescript_Compojure_Clojure Java Interop - Fatal编程技术网

无法将java.lang.String转换为clojure.lang.IFn

无法将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")))

我正在尝试将一些数据添加到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"))))

在这里,我想根据
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中,是完全正常的,你可以在任何地方看到它,不必担心

另一方面,
应该突出并吸引你的眼球。它通常意味着:

  • 有人正在返回一个函数
  • 该功能应立即运行
这种模式在任何方面都没有错,只是学会识别它是一种很有用的方法,可以快速习惯于阅读Clojure代码。在这种情况下,它可能意味着有太多的开头

((db/addUser email phone roleId status) (str "true"))))
在Clojure中,是完全正常的,你可以在任何地方看到它,不必担心

另一方面,
应该突出并吸引你的眼球。它通常意味着:

  • 有人正在返回一个函数
  • 该功能应立即运行
这种模式在任何方面都没有错,只是学会识别它是一种很有用的方法,可以快速习惯于阅读Clojure代码。在这种情况下,它可能意味着有太多的开头

((db/addUser email phone roleId status) (str "true"))))