erlang的数据类型 (2)

小编 2026-06-09 阅读:1764 评论:0
 继续前面说列表。列表里面的元素,第一个成为head,head之后的都叫tail。用er...

 继续前面说列表。

列表里面的元素,第一个成为head,head之后的都叫tail。用erlang的内置方法看一下:

> hd([1,2,3,4]).1> tl([1,2,3,4]).[2,3,4]

 为什么要这样呢?因为列表的指针是在头部的,对头部进行操作是最快捷和高效的。

 

使用竖线| 能快速区分头部和尾部:

> [H|T]=[1,2,3,4].[1,2,3,4]> H.1

 竖线运算符还能把两个列表连在一起:

> L = [3,3,4].[3,3,4]> LL = [1,1,1|L].[1,1,1,3,3,4]

 不过竖线后面必须是一个列表:

> [66,77|88].[66,77|88]> [66,77|[88]]."BMX"

 

 

六,列表推导

和python一样,erlang也有列表推导式List comprehensives。

这个语法比较简单,我们看几个例子:

> [2*N || N <- [1,2,3,4]].[2,4,6,8]> [X+Y || X <- [1,2], Y <- [2,3]].[3,4,4,5]> Weather = [{toronto, rain}, {montreal, storms}, {london, fog},  {paris, sun}, {boston, fog}, {vancouver, snow}].[{toronto,rain}, {montreal,storms}, {london,fog}, {paris,sun}, {boston,fog}, {vancouver,snow}]> FoggyPlaces = [X || {X, fog} <- Weather].[london,boston]

 

七,二进制

erlang对二进制的操作也提供了一些方法。

比特是由两个小于号和两个大于号包装的<<>>,每个元素包含一个冒号,元素间用逗号分开:

> Color = 16#F09A29.15768105> Pixel = <<Color:24>>.<<240,154,41>>

 比特也满足模式匹配:

> Pixels = <<213,45,132,64,76,32,76,0,0,234,32,15>>.<<213,45,132,64,76,32,76,0,0,234,32,15>>> <<Pix1,Pix2,Pix3,Pix4>> = Pixels.** exception error: no match of right hand side value <<213,45,132,64,76,32,76,0,0,234,32,15>>> <<Pix1:24, Pix2:24, Pix3:24, Pix4:24>> = Pixels.<<213,45,132,64,76,32,76,0,0,234,32,15>>> <<R:8, G:8, B:8>> = <<Pix1:24>>.<<213,45,132>>> R.213

这里暂不介绍二进制的左移和右移,以及位操作。 

 

八,二进制推导

二进制语法也有推导式,我们简单看几个例子:

> [ X || <<X>> <= <<1,2,3,4,5>>, X rem 2 == 0].     [2,4]> Pixels = <<213,45,132,64,76,32,76,0,0,234,32,15>>.<<213,45,132,64,76,32,76,0,0,234,32,15>>> RGB = [ {R,G,B} || <<R:8,G:8,B:8>> <= Pixels ].[{213,45,132},{64,76,32},{76,0,0},{234,32,15}]

 

 

OK,就先这些吧。

版权声明

本文仅代表作者观点,不代表百度立场。
本文系作者授权百度百家发表,未经许可,不得转载。

热门文章
  • 机房智能化温湿度解决方式之POE供电以太网温湿度传感器

    机房智能化温湿度解决方式之POE供电以太网温湿度传感器
    机房智能化温湿度解决方式之POE供电以太网温湿度传感器 北京盈创力和电子科技有限公司 智能型TCP网口温湿度记录仪 北京IP网络温湿度记录仪厂家,北京盈创力和 北京智能型TCP网口温湿度记录仪IP网络温湿度记录仪是一种新型的基于TCP/IP协议双绞线以太网标准温湿度采集模块,利用它可以实现现场温度值、相对湿度值的采集,同时利用其自身的RJ45通信接口可以方便地和机房监控主机或交换机集线器进行联网。 工作于-40℃~85℃工业级带...
  • Sequential Monte Carlo Methods (SMC) 序列蒙特卡洛/粒子滤波/Bootstrap Filtering

    Sequential Monte Carlo Methods (SMC) 序列蒙特卡洛/粒子滤波/Bootstrap Filtering
    Problem Statement 我们考虑一个具有马尔可夫性质、非线性、非高斯的状态空间模型(State Space Model):对于一个时间序列上的观测结果{yt,t∈N}\\{ y_t , t \\in N \\}{yt​,t∈N},我们认为每个观测结果yty_tyt​的生成依赖于一个无法直接观察的隐变量xt∈{xt,t∈N}x_t \\in \\{x_t , t \\in N \\}xt​∈{xt​,t∈N},即:p(...
  • HTTP状态保持的原理

    HTTP状态保持的原理
    a)在用户登录之后,浏览器返回响应的时候会在响应中添加上cookieb)浏览器接收到cookie之后会自动保存c)当用户再次请求同一服务器中的其他网页的时候,浏览器会自动带上之前保存的cookied)服务接收到请求之后可以请 request 对象中取到cookie 判断当前用户是否登录  Http是无状态的,就是连接时数据互通,关闭后...
  • Hive 系统函数及示例

    Hive 系统函数及示例
    查看所有系统函数 show functions; 函数分类 内置函数【系统函数】 数学函数: floor、round、ceil、cos、log2等 字符串函数: length、reverse、trim、lower、get_json_object、repeat等 收集函数: size 转换函数: cast 日期函数: year、month、datediff、date、date_add等 条件函数: coalesce、case…w...
  • CSRF的原理和防范措施

    CSRF的原理和防范措施
    a)攻击原理:i.用户C访问正常网站A时进行登录,浏览器保存A的cookieii.用户C再访问攻击网站B,网站B上有某个隐藏的链接或者图片标签会自动请求网站A的URL地址,例如表单提交,传指定的参数iii.而攻击网站B在访问网站A的时候,浏览器会自动带上网站A的cookieiv.所以网站A在接收到请求之后可判断当前用户是登录状态,所以...
标签列表