首页 > 代码库 > 从两个list中挑出匹配部分
从两个list中挑出匹配部分
match函数很特别, 就是用两个list比较的时候,后一个list中如果有符合前一个list的通配符的描述,则挑出来,作为独立的list返回。
简单的例子如下:
> (match ‘(a ? c) ‘(a b c)) (b)
注意通配符只有三种: * ? 和 +
* 表示任何多个元素
? 表示可以有元素,也可以没有
+ 表示至少有一个元素
(match ‘(a ? c) ‘(a (x y z) c)) → ((x y z))
注意,如果match函数的地一个参数list中没有通配符,则返回nil
> (match ‘(a d c) ‘(a b c)) nil
下面例子较复杂, 表示了通配符可以在list内部的list元素中使用
> (match ‘(a (b c ?) x y z) ‘(a (b c d) x y z)) (d)
从两个list中挑出匹配部分
声明:以上内容来自用户投稿及互联网公开渠道收集整理发布,本网站不拥有所有权,未作人工编辑处理,也不承担相关法律责任,若内容有误或涉及侵权可进行投诉: 投诉/举报 工作人员会在5个工作日内联系你,一经查实,本站将立刻删除涉嫌侵权内容。