Erlang if语句并返回true

 kg9854997 发布于 2023-02-02 19:25

我想知道,erlang的if语句和返回值背后的想法(在这种情况下是true-> true).这是我的代码片段

if
 (Velocity > 40) -> io:format(" processing fast !~n") ;
 true -> true
end,

我知道Erlang不允许你有一个if if without true statement选项.但即使我可以使用true-> false但它对最终输出无关紧要.

实际上if子句和返回值背后的想法是什么.

1 个回答
  • Erlang的if是布尔表达式的简单模式匹配并返回结果.

    它真的只需要匹配的东西,你根本不需要"真实 - >真实"的情况

    例如:

    if
     (Velocity > 40) -> io:format(" processing fast !~n") ;
     (Velocity < 40) -> io:format(" processing slow !~n") ;
     (Velocity == 40) -> io:format(" processing eh !~n") 
    end,
    

    没有"真实 - >"的情况,但也没有机会与其中一种模式不匹配.

    原因是"if"也是一个表达式(就像erlang中的所有内容)所以,你可以这样做:

    X = if 
         (Vel > 40) -> 10;
         (Vel < 40) -> 5
        end,
    

    如果Vel == 40,X的值是多少?它将是未定义的,因此erlang要求您始终匹配.

    当您不想指定详尽匹配时,常见的事情是使用true,如:

    X = if 
         (Vel > 40) -> 10;
         (Vel < 40) -> 5;
         true -> 0
        end,
    

    在最后一种情况下,X总是有一个值(10,5或0)

    合理?

    2023-02-02 19:28 回答
撰写答案
今天,你开发时遇到什么问题呢?
立即提问
热门标签
PHP1.CN | 中国最专业的PHP中文社区 | PNG素材下载 | DevBox开发工具箱 | json解析格式化 |PHP资讯 | PHP教程 | 数据库技术 | 服务器技术 | 前端开发技术 | PHP框架 | 开发工具 | 在线工具
Copyright © 1998 - 2020 PHP1.CN. All Rights Reserved 京公网安备 11010802041100号 | 京ICP备19059560号-4 | PHP1.CN 第一PHP社区 版权所有