Clojure映射匿名函数
我试图将一个匿名函数映射到一个集合,得到一个ClassCastExceptionClojure映射匿名函数,clojure,Clojure,我试图将一个匿名函数映射到一个集合,得到一个ClassCastException (defn mapanfn [names] (map (#(str "Hello %")) names)) (mapanfn ["Bobby" "Nico" "Ringo"]) 谢谢, R.如果要使用格式说明符,只需去掉匿名函数周围的额外括号,然后使用格式即可: (defn mapanfn [names] (map #(format "Hello %s" %) names)) (
(defn mapanfn
[names]
(map (#(str "Hello %"))
names))
(mapanfn ["Bobby" "Nico" "Ringo"])
谢谢,
R.如果要使用格式说明符,只需去掉匿名函数周围的额外括号,然后使用
格式即可:
(defn mapanfn
[names]
(map #(format "Hello %s" %) names))
(defn mapanfn
[names]
(map #(str "Hello " %) names))
或者使用不带格式说明符的str
:
(defn mapanfn
[names]
(map #(format "Hello %s" %) names))
(defn mapanfn
[names]
(map #(str "Hello " %) names))
在这两种情况下,%
都是指调用匿名函数时使用的值,但它在字符串中不起作用。只需取出匿名函数周围的额外括号,如果要使用格式说明符,请使用格式:
(defn mapanfn
[names]
(map #(format "Hello %s" %) names))
(defn mapanfn
[names]
(map #(str "Hello " %) names))
或者使用不带格式说明符的str
:
(defn mapanfn
[names]
(map #(format "Hello %s" %) names))
(defn mapanfn
[names]
(map #(str "Hello " %) names))
在这两种情况下,%
都引用了匿名函数调用时使用的值,但它在字符串中不起作用。您在这里犯了几个错误
第一个是%
符号,它不应该是字符串的一部分。也许您把它与标准的格式
函数混淆了。因此表达式应该是(str“Hello”%)
或(format“Hello%s”%)
第二个,由于额外的参数,您调用了匿名函数两次。#(str“Hello%”
表达式返回一个函数,但将其放入parens中会再次调用该函数,并给出一个字符串“Hello%”
。因此,在map
函数中,您试图将字符串作为函数调用,这就是调用异常
(defn mapanfn
[names]
(map (#(str "Hello %"))
names))
(mapanfn ["Bobby" "Nico" "Ringo"])
在您的示例中,正确的函数应该是#(str“Hello”%)
您在这里犯了几个错误
第一个是%
符号,它不应该是字符串的一部分。也许您把它与标准的格式
函数混淆了。因此表达式应该是(str“Hello”%)
或(format“Hello%s”%)
第二个,由于额外的参数,您调用了匿名函数两次。#(str“Hello%”
表达式返回一个函数,但将其放入parens中会再次调用该函数,并给出一个字符串“Hello%”
。因此,在map
函数中,您试图将字符串作为函数调用,这就是调用异常
(defn mapanfn
[names]
(map (#(str "Hello %"))
names))
(mapanfn ["Bobby" "Nico" "Ringo"])
在您的示例中,正确的函数应该是#(str“Hello”%)