首页 诗词 字典 板报 句子 名言 友答 励志 学校 网站地图
当前位置: 首页 > 教程频道 > 开发语言 > 编程 >

erLang学些札记2-基本类型2

2012-10-24 
erLang学些笔记2---基本类型2?7.Lists 集合?1.可以包含任何类型数据,最常用的数据结构之一?1 Li [1,3,{

erLang学些笔记2---基本类型2

?

7.Lists 集合

?

1.可以包含任何类型数据,最常用的数据结构之一

?

1> Li = [1,3,{tt,22},5.3,kj].[1,3,{tt,22},5.3,kj]
?

?

2.在List中erlang会将连续可组成字符创的集合输出为字符创,除非一个字符不能转化为字母

?

2> [97,98,99]."abc"                                  -- 因为十进制的97 对应到 assic 表中就是 英文字母a,3> [97,98,99,3].                       -- 除非list中包含一个无法转化的数字(例如3对应assic中是ETX正文结束),那么就原样显示list[97,98,99,3]4> [244]."?"
?

?

3.list的修改

?

3.1 若是 进行 -- 操作,那么会去除相同的数据,若是进行 ++ ,对于重复的数据还是会进行添加。具体如下所示

?

10> [1,2,3,4,5] -- [1,3].[2,4,5]11> [1,2,3] ++ [4,5].[1,2,3,4,5]12> [1,2,3] ++ [2].[1,2,3,2]1> [1,1,2,3] -- [1].                  -- 匹配到第一个就进行操作![1,2,3]
?

3.2 运算符都是自右到左进行运算,也就是说会进行最右边的运算符进行计算。具体如下所示

?

13> [1,2,3]--[2,3]--[1].              -- 先进行了 [2,3] -- [1] 的运算,得到还是 [2,3].再进行了 [1,2,3] -- [2,3][1]14> [1,2,3]--[2,3]--[2].              -- 先进行了 [2,3] -- [2] 的运算,得到[3].再进行了 [1,2,3] -- [3][1,2]
?

?

?

3.3一些常用函数 ,head 缩写 hd:取list的第一个元素。 ?tail 缩写 tl:取head之外的所有数据 。length。计算list的长度

?

15> Point = [1,2,3].[1,2,3]16> hd(Point).117> tl(Point).[2,3]18> length(Point).3
?

?

3.4 list之间的组合

?

list之间的组合只需要一个 | 符号即可!head总是取第一个数据,tail取剩余的数据

?

24> List = [1,2,3,4].[1,2,3,4]25> NewList = [k|List].[k,1,2,3,4]26> [Head|Tail] = List.[1,2,3,4]27> Head.128> Tail.[2,3,4]
?

?

3.5 | 分割后的数据一定要求是一个list集合。

?

7> [3|[]].[3]8> [3|[1|[3]]].[3,1,3]9> [3|[1|[3|[]]]].[3,1,3]11> [1|3|[1|[3|[]]]].* 1: syntax error before: '|'    //同一级别中 只能存在一个 | 。不允许存在两个| 
?

?

具体合理的组装方式是 [Term1| [Term2 | [... | [TermN]]]]. 以下都是等价的

?

12> [a,b,c,d].[a,b,c,d]13> [a|[b,c,d]].[a,b,c,d]14> [a,b|[c,d]].[a,b,c,d]15> [a,b|[c|[d]]].[a,b,c,d]16> [a,b|[c|[d|[]]]].[a,b,c,d]
?

?

?

8.list 的扩展应用

?

8.1 NewList = [Expression || Pattern <- List, Condition1, Condition2, ... ConditionN]. 表达式

?

4> List = [2*N || N <- [1,2,3,4]].                          [2,4,6,8]5> [X || X <- [1,2,3,4,5,6,7,8,9,10],X rem 2 =:= 0].[2,4,6,8,10]6> RestaurantMenu = [{steak,5.99},{bear,3.99},{poutine,6.99},{kitten,20.99}].[{steak,5.99},{bear,3.99},{poutine,6.99},{kitten,20.99}]8> [{Item,Price*10.7}||{Item,Price} <- RestaurantMenu,Price >= 6 , Price =<10].[{poutine,74.79299999999999}]
?

注意点:

1) ||代表运算分割符。

2) <- 代表将list 赋值给变量并进行循环处理

?

8.2也可以进行运算、匹配,写的很随意,自由

?

9> [X+Y|| X<-[1,2],Y<-[3,4]].                   //运算[4,5,5,6]
?

想当于做了两个for 循环。 <-就代表指定变量并进行循环遍历

?

?

10> Weather = [{hangzhou,snow},{shanghai,rain},{beijing,wet},{wenzhou,fog},{shenzheng,hot},{taizhou,fog}].[{hangzhou,snow}, {shanghai,rain}, {beijing,wet}, {wenzhou,fog}, {shenzheng,hot}, {taizhou,fog}]11> FoggCity = [X||{X,fog} <- Weather].       //匹配[wenzhou,taizhou]

热点排行