巧用map,mapcar,mapc,maplist对foreach函数进行遍历
mapcarforeach默认返回值为遍历的list
mapcar将foreach执行的最后一条语句返回到一个list中。
举个例子:
b = '( 0 1 2 3 )
foreach(mapcar x b x*3)
foreach每遍历一次,最后执行语句为x*3,所以每遍历一次返回值为x*3,所以函数最终的返回结果为(0 3 6 9)
mapc
mapc为foreach的默认模式,foreach返回值为遍历的list
map
map函数与上面两个区别比较大。foreach每次遍历的元素为list。请仔细看下面的例子:
例如:
b = '( 0 1 2 3 )
foreach(map x b println(x) x)
该函数实现可以打印每次遍历x的值。输出为
(0 1 2 3);第一次遍历,x值为(0 1 2 3)
(1 2 3);第二次遍历,x值为
(2 3);第三次遍历,x值为
(3);第四次遍历,x值为
(0 1 2 3);foreach函数返回值
maplist
maplist与map很类似,唯一区别是其返回值。
foreach(maplist x b println(x) x)
(0 1 2 3);第一次遍历,x值为(0 1 2 3)
(1 2 3);第二次遍历,x值为
(2 3);第三次遍历,x值为
(3);第四次遍历,x值为
((0 1 2 3) ;foreach函数返回值
(1 2 3)
(2 3)
(3)
)
mapcan函数执行foreach时返回值为函数最后执行的结果,返回结果不能嵌套list
例如:
foreach( mapcan x '( ( 1 2 ) ( 3 4 5 ) ( 6 7 ) ) x)
(1 2 3 4 5
6 7
)
mpac 的区别是什么 l379520330 发表于 2015-4-16 16:02
mpac 的区别是什么
mapc为foreach的默认模式,foreach返回值为遍历的list 本帖最后由 jelly_770 于 2015-4-23 21:21 编辑
谢谢罗老师,学习 jelly_770 发表于 2015-4-23 21:19
谢谢罗老师,跟我第9课的思路,刚好可以用的上
:lol,学完了啊。感觉怎么样,给点意见。。。 vivienluo 发表于 2015-4-23 21:21
,学完了啊。感觉怎么样,给点意见。。。
;P 有思路还没写出来,学艺不精,还要老师多见谅 慢慢学习中………辛苦了~……… 感觉有点困难 要多尝试看看了 实用的方法 老师 为啥我的显示结果都是一样(0 1 2 3)?! 把我给搞蒙了 :L
页:
[1]