(map #(words %) indexes)
单词是字符串的向量,索引是一系列非负整数。我知道#(...)是一个匿名函数,%表示它的参数。我认为这个想法是在指定的索引处获取单词,但有人可以将匿名函数重写为一个更容易理解的函数吗?
答案 0 :(得分:3)
这只是写(map words indexes)
的一种坏方法。我不知道函数words
做了什么,或者indexes
的值是什么,但是这段代码在words
的每个元素上调用函数indexes
并返回一系列结果。
答案 1 :(得分:3)
如果我理解正确,你有:
(def words ["who" "what" "where" "when"])
(def indexes (range 4))
(map #(words %) indexes)
=> ("who" "what" "where" "when")
关于clojure的一个好处是标准数据结构也是其成员的功能。这意味着以下内容是等效的:
(get words 1)
=> "what"
(words 1)
=>"what"
这也适用于地图和集合。前者取一个键并返回值。后者在列表中查找参数,如果找到则返回nil。
答案 2 :(得分:2)
(def words ["apple" "banana" "cantaloupe" "date" "fig"])
(ifn? words) ;=> true
(words 0) ;=> "apple"
(words 1) ;=> "banana"
相当于
(get words 0) ;=> "apple"
(get words 1) ;=> "banana"
所以
(map #(words %) [0 1])
等同于
的(懒惰序列)((get words 0) (get words 1))