Erlang学习笔记(5) -- 断言, when / case of / if

这篇博客介绍了Erlang语言中的断言使用,包括其语法形式,如原子true、断言谓词、比较和算数表达式等。通过实例展示了如何使用when、if和case来编写求面积的程序。由于书中部分内容不清晰,作者还参考了其他资料进行学习。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

学习用的书籍是这个
http://book.douban.com/subject/3260311/

断言:

  1. 将断言分开的逗号(,)表示and(与)操作;
    将断言分开的分号(;)表示or(或)操作。
  2. 断言表达式合法的语法形式:
    1)原子true
    2)其他常量,这些在断言表达式中都会被求值为false
    3)断言谓词或者断言BIF
    4)比较表达式
    5)算数表达式
    6)布尔表达式
    7)短路布尔表达式

下面我用三种方法来写一个求面积程序,

when

when_area({Type,R})
    when Type==circle   ->3.14*R*R;     
when_area({Type,R}) 
    when Type==square   -> R*R.

%%%下面是命令行执行
16> test:when_area({circle,2}).
12.56

if

%% 1.if Condition ->   ; Condition ->   ;
%%   跟其他语言不同的是, 不用谢else if,  最后的else 用true 来匹配到~

%%2. 跟when语法比较
%%   when 不是写在函数里面,而是需要写多次函数定义
%%   大概还有其他不同, 大神看过求指点~
if_area(Sharp) ->
    {Type,R} = Sharp,
    if Type==circle->3.14*R*R;
        Type==square -> R*R;
        true ->0
end.


%%%下面是命令行执行
12> test:if_area({circle,2}).
12.56
13> test:if_area({rect,2}).
0

case

%%case 跟其他语言的switch 差不多
%%跟if比较
%%不一样的就是, case可以方便的匹配不同类型参数, 但是case并不使用"断言"
case_area(Sharp) ->
    case Sharp of 
        {circle, R} -> 3.14*R*R;
        {square, Side} -> Side*Side;
        {rect, Width,Height} -> Width*Height
end.
%%%下面是命令行执行
1> test:case_area({circle,2}).
12.56
2> test:case_area({square,2}).
4
4> test:case_area({rect,2,3}).
6

因为书上很多东西也没讲清楚
所以这次有部分从这里借鉴来的
http://blog.youkuaiyun.com/cntway/article/details/7747192

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值