首页 > 代码库 > map的使用
map的使用
map是一个非常好用的功能,先举个简单的例子
两个list元素的操作
(map + ‘(1 2 3) ‘(50 60 70)) → (51 62 73)
两个list元素的if操作
(map if ‘(true nil true nil true) ‘(1 2 3 4 5) ‘(6 7 8 9 10)) → ‘(1 7 3 9 5)
这个有点意思,相当与用一堆bool值来确定是从第一个list中挑选元素,还是从第二个list中挑选。然后组成新的list.
将lambda表达式用于两个list
(map (fn (x y) (* x y)) ‘(3 4) ‘(20 10)) → (60 40)
提取二维表中的某个列所有的数据
这个语法非常实用,现在就展现社区里面rickybody的一段代码:
(new Class ‘Node) (set ‘l (list (Node "A" ‘happy) (Node "B" ‘sad) (Node "C" ‘happy) (Node "D" ‘indifferent) (Node "E" ‘surly) (Node "F" ‘happy) (Node "G" ‘sad))) (println (map (fn (n) (n 0)) l))
输出结果是:
(Node Node Node Node Node Node Node)
如果(n 0)改成(n 1),结果为:
("A" "B" "C" "D" "E" "F" "G")
解释:
这里创建了一个Node类,用了newlisp的FOOP模式。然后将多个Node对象放在一个list中,如FOOP,每个对象都是一个list,第一个元素是类型,第二个元素是对象名称,第三个元素是一个属性. 看上去就是一个二维表,有三列,有七行。
这个自定义函数(fn (n) (n 0)) 就是提取对象list中的第0个元素,当然也可以提取第1个,第2个。
结果变成了一个list。
map的使用
声明:以上内容来自用户投稿及互联网公开渠道收集整理发布,本网站不拥有所有权,未作人工编辑处理,也不承担相关法律责任,若内容有误或涉及侵权可进行投诉: 投诉/举报 工作人员会在5个工作日内联系你,一经查实,本站将立刻删除涉嫌侵权内容。