怎么写“a == b? X:Y“在Erlang?

栏目: Erlang · 发布时间: 7年前

内容简介:说明三元运算符的原因_? _:_存在于许多语言中的原因是它们有两个语法类:语句和表达式.由于if-then-else结构通常属于语句类,因此在输入表达式时无法使其工作.因此你添加_? _:_运算符到表达式类.正如另一篇文章所述,你可以采取== b? true:false并且只写一个== b,但这并不能解释我们可能有== b的一般情况? X:Y表示任意表达式X和Y.另请注意,在Erlang中a == b始终为false,因此您可以认为真正要做的是用false替换整个表达式.

说明

三元运算符的原因_? _:_存在于许多语言中的原因是它们有两个语法类:语句和表达式.由于if-then-else结构通常属于语句类,因此在输入表达式时无法使其工作.因此你添加_? _:_运算符到表达式类.

正如另一篇文章所述,你可以采取== b? true:false并且只写一个== b,但这并不能解释我们可能有== b的一般情况? X:Y表示任意表达式X和Y.另请注意,在Erlang中a == b始终为false,因此您可以认为真正要做的是用false替换整个表达式.

幸运的是,与大多数函数式语言一样,Erlang只有一个语法类,表达式.因此,您可以使用案例a == b of X – > …; Y – > …在函数的任何位置结束,包括其他表达式.换句话说,三元_? _:_运算符在Erlang中是多余的,因为案例已经有效.

一个例子:

假设我们要返回一个简单的proplist,我们需要做一些计算

f() ->
    case a == b of
          true -> 
           [{a, 3},
            {b, <<"YE">>},
            {c, 7}];
          false ->
           [{a, 3},
            {b, <<"YE">>},
            {c, "HELLO!!!"}];
    end.

但由于案例构建是一个表达式,我们可以将其内联:

f() ->
    [{a, 3},
     {b, <<"YE">>},
     {c, case a == b of
          true -> 7;
          false -> "HELLO!!!"
         end}].

并完成了这件事.

为什么我不提倡使用IF

Erlang中的if .. end结构通常不是你想要的.在这种情况下,您希望仔细检查值a == b,它可以产生两个输出之一为true或false.在这种情况下,case-expression更直接.如果你必须检查多个不同的测试并选择第一个匹配,那么if会被更好地使用,而我们在这里只需要进行一次测试.


以上就是本文的全部内容,希望本文的内容对大家的学习或者工作能带来一定的帮助,也希望大家多多支持 码农网

查看所有标签

猜你喜欢:

本站部分资源来源于网络,本站转载出于传递更多信息之目的,版权归原作者或者来源机构所有,如转载稿涉及版权问题,请联系我们

小团队构建大网站:中小研发团队架构实践

小团队构建大网站:中小研发团队架构实践

张辉清 等 / 电子工业出版社 / 2019-1 / 69

《小团队构建大网站:中小研发团队架构实践》结合作者近几年的工作经验,总结了一套可直接落地、基于开源、成本低、可快速搭建的中小研发团队架构实践方法。《小团队构建大网站:中小研发团队架构实践》共5篇22章,开篇是本书的导读;架构篇是设计思想的提升,包括企业总体架构、应用架构设计、统一应用分层等;框架篇主讲中间件和工具的使用,包括消息队列、缓存、Job、集中式日志、应用监控和微服务等;公共应用篇是技术与......一起来看看 《小团队构建大网站:中小研发团队架构实践》 这本书的介绍吧!

RGB转16进制工具
RGB转16进制工具

RGB HEX 互转工具

正则表达式在线测试
正则表达式在线测试

正则表达式在线测试

HSV CMYK 转换工具
HSV CMYK 转换工具

HSV CMYK互换工具