Clojure映射匿名函数

Clojure映射匿名函数,clojure,Clojure,我试图将一个匿名函数映射到一个集合,得到一个ClassCastException (defn mapanfn [names] (map (#(str "Hello %")) names)) (mapanfn ["Bobby" "Nico" "Ringo"]) 谢谢, R.如果要使用格式说明符,只需去掉匿名函数周围的额外括号,然后使用格式即可: (defn mapanfn [names] (map #(format "Hello %s" %) names)) (

我试图将一个匿名函数映射到一个集合,得到一个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))
或者使用不带格式说明符的
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”%)