在Clojure中比较字符串的正确方法是什么?
我不知道如何在Clojure中比较字符串。鉴于这一基本功能:在Clojure中比较字符串的正确方法是什么?,clojure,Clojure,我不知道如何在Clojure中比较字符串。鉴于这一基本功能: (defn login [username] (let [x (username)] (if (identical? x "John") "Welcome" "incorrect username"))) 我一直收到这样的错误消息:调用该函数时,java.lang.String不能转换为clojure.lang.IFn。在Clojure中比较字符串的最佳方法是什么?您收到的错误消息是因为进入函数的用户
(defn login [username]
(let [x (username)]
(if (identical? x "John")
"Welcome"
"incorrect username")))
我一直收到这样的错误消息:调用该函数时,java.lang.String不能转换为clojure.lang.IFn。在Clojure中比较字符串的最佳方法是什么?您收到的错误消息是因为进入函数的
用户名
是字符串,并且您正在尝试调用它(没有任何参数)。您根本不需要let
表单。而不是x
putusername
所有不可变值都使用=
响应:
(=用户名“John”)
=
实际上是检查值,而不是一些“内存指针”概念 您收到的错误消息是因为进入函数的username
是一个字符串,您试图调用它(没有任何参数)。您根本不需要let
表单。而不是x
putusername
所有不可变值都使用=
响应:
(=用户名“John”)
=
实际上是检查值,而不是一些“内存指针”概念 不要将用户名
作为函数调用:这就是(用户名)
的作用。比较字符串的方式也是错误的(请参阅Chris Murphy的答案),但在您实际尝试比较字符串之前,您就会遇到错误。只需使用username
而不使用parens。不要将username
作为函数调用:这就是(username)
所做的。比较字符串的方式也是错误的(请参阅Chris Murphy的答案),但在您实际尝试比较字符串之前,您就会遇到错误。只需使用用户名
,无需密码。