博客
关于我
强烈建议你试试无所不能的chatGPT,快点击我
Erlang学习总结之Erlang语法中的逗号(,)、分号(;),句号(.)的正确用法...
阅读量:5797 次
发布时间:2019-06-18

本文共 1375 字,大约阅读时间需要 4 分钟。

hot3.png

1.逗号(,)分隔函数调用,数据构造,和模式中的参数

例如:

    103022_AwUA_1540325.png

         表达式序列就是由一系列逗号分隔的表达式,他们在箭头之后,随处可见,如下图函数start_nano_server()->后面的就是表达式序列,这个表达式序列的值为seq_loop(listen)执行之后的值。seq_loop(Listen)->之后的同样是表达式序列,表达式序列在执行的时候,是一个一个来执行的,只要中间有一个失败,就会在这行报错,就不会往下接着执行。程序就退出,我们可以很清楚的了解程序在哪一行出错。

2.分号(;)分隔子句,像函数子句,模式匹配的子句,case表达式里面的子句,if表达式,try....catch 表达式,receive表达式。

        我的个人理解是子句就是选择语句,可以进行选择,就是要么执行这个,要么执行那个。就是控制流程分支的。

2.1函数子句,同一函数的必须具备相同的函数名和相同的参数数量,且必须在同一处定义--不允许在同一函数的两个子句之间再插入其他函数定义。

111022_52cO_1540325.png

如果这样写,两个相同名字的handle的函数子句之前用句号。

会报一下错误:

111317_GK6w_1540325.png

他们之间应该用分号(;)

       area({circle,Radius})->            Radius*Radius*math:pi();       area({square,Side})->            Side*Side;        area({rectangle,Height,Width})->            Height*Width.

2.2 case表达式里面的子句(要是Erlang里面只有函数子句这一种控制流程的方法,你就必须为程序中的每个小小的分支都取一个函数名。这样的做法太麻烦了,所以case也是可以控制分支的)

注意:让最后一个子句不要带分号(;)

例如

area(Shape)->    case Shape of        {circle,Radius}->            Radius*Radius*math:pi();        {square,Side}->            Side*Side;        {rectangle,Height,Width}->            Height*Width    end.

2.3 if 表达式是case表达式的一种缩略模式,他不针对特定的值做分支判断也不含模式。

sign(N) when is_number(N)->    if        N>0 ->positive;        N<0 ->negative;        true->zero     end.

用case表达式如下:

sign(N) when is_number(N)->   case dummy of       _ when N>0 ->positive;       _ when N<0 ->negative;       _ when true->zero     end.

if表达式比较少用,因为Erlang大部分的分支判断或多或少依赖于模式匹配啊。

转载于:https://my.oschina.net/u/1540325/blog/358004

你可能感兴趣的文章
shell 加法 的几种方法
查看>>
databinding 自定义控件设置属性遇到的问题
查看>>
C 语言中一般调用的库文件路径
查看>>
Linux任务计划、周期性任务执行
查看>>
我的友情链接
查看>>
互联神州网络雄猫老师完整ASA防火墙全集
查看>>
字符集与编码(一)——charset vs encoding
查看>>
C#发送邮件
查看>>
韩剧《幽灵》中的各种安全辅助神器盘点
查看>>
考虑云计算安全的几个方面
查看>>
SpringCloud(第 035 篇)配置服务客户端ConfigClient链接经过认证的配置服务端
查看>>
MySQL应用管理常用命令
查看>>
mk-parallel-dump快速备份mysql数据库命令
查看>>
CentOS升级gcc
查看>>
高可用集群HA(heartbeat)
查看>>
关于oracle找回误删数据
查看>>
其它基于 FreeBSD 的各类 BSD 发行版
查看>>
加密解密技术基础、PKI及创建私有CA
查看>>
Web页中使用MediaPlayer
查看>>
apache htpasswd命令用法详解
查看>>