(map #(words %) indexes)
words 是一个字符串向量,indexes 是一个非负整数序列。我知道 #(...) 是一个匿名函数, % 代表它的参数。我认为这个想法是在指定的索引处获取单词,但是有人可以将匿名函数重写为更容易理解的函数吗?
(map #(words %) indexes)
words 是一个字符串向量,indexes 是一个非负整数序列。我知道 #(...) 是一个匿名函数, % 代表它的参数。我认为这个想法是在指定的索引处获取单词,但是有人可以将匿名函数重写为更容易理解的函数吗?
这只是一种糟糕的写作方式(map words indexes)
。我不知道该函数的words
作用,也不知道它的值是什么,但是这段代码在每个元素上indexes
调用该函数一次,并返回一系列结果。words
indexes
如果我理解正确,您有:
(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"
这也适用于地图和集合。前者接受一个键并返回值。后者在列表中查找参数,如果找到或为零则返回。
(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))