我正在尝试将匿名函数映射到集合,并且我得到了ClassCastException。
(defn mapanfn
[names]
(map (#(str "Hello %"))
names))
(mapanfn ["Bobby" "Nico" "Ringo"])
谢谢, R上。
答案 0 :(得分:5)
只需取出匿名函数周围的额外括号,如果要使用格式说明符,请使用(defn mapanfn
[names]
(map #(format "Hello %s" %) names))
:
str
或者在没有格式说明符的情况下使用(defn mapanfn
[names]
(map #(str "Hello " %) names))
:
%
在这两种情况下,-bash
指的是调用匿名函数的值,但它不会在里面字符串中起作用。
答案 1 :(得分:1)
你在这里犯了几个错误。
第一个,%
符号不应该是字符串的一部分。也许您将它与标准format
函数混淆了。因此,表达式应为(str "Hello " %)
或(format "Hello %s" %)
。
第二个,由于额外的parens,你将你的匿名函数称为两次。 #(str "Hello %")
表达式返回一个函数,但是将它放入parens会再次调用它并给出一个字符串"Hello %"
。所以在map
函数中,你试图将一个字符串作为一个函数来调用,它正在调用一个Exception。
示例中的正确功能只是#(str "Hello " %)
。