(map drop '(0 1) '((0 1 2 3) (1 2 3)))
Run Code Online (Sandbox Code Playgroud)
答案是:((0 1 2 3)(2 3))
有人可以解释一下发生了什么吗?我无法破译这段代码?!
谢谢!
Clojure map可以在函数操作数之后获取多个seq,并为每个seq拉出一个元素.当第一个seq用尽时,地图结束.
在您的表单中,您提供map两个seq:'(0 1)并且'((0 1 2 3) (1 2 3))它们都有两个元素.因此代码描述了两个drop调用:
(drop 0 '(0 1 2 3)) ; => '(0 1 2 3)
(drop 1 '(1 2 3)) ; => '(2 3)
Run Code Online (Sandbox Code Playgroud)
希望这个文档有助于清除这一点(强调我的):
Run Code Online (Sandbox Code Playgroud)clojure.core/map ([f coll] [f c1 c2] [f c1 c2 c3] [f c1 c2 c3 & colls])返回一个惰性序列,包括将f应用于每个coll的第一项集合的结果,然后将f应用于每个coll中的第二项集合,直到任何一个colls都用完为止.其他colls中的任何剩余项都将被忽略.函数
f应该接受colls of colls参数.