Erlang入门教程 - 10. 模式匹配,Guard,变量作用域

发布网友 发布时间:2024-12-11 22:27

我来回答

1个回答

热心网友 时间:2024-12-11 23:34

找出列表中最高或最低气温是很有用的。在寻找气温极值时,首先考虑在函数中查找列表的最大值。

在Erlang中,即使函数名相同,但参数数量不同则视为完全不同的函数。为此,直接使用函数名加上参数个数来区分,如list_max/1和list_max/2。

遍历列表并“带走”值,list_max/1假设列表最大值为表头元素,然后将表头元素和列表剩余部分传递给list_max/2。此函数对空列表或非列表值的调用会引发错误。Erlang倾向于在其他地方处理此类错误。

在list_max/2中,当Head大于Result_so_far时使用Head代替Result_so_far。使用when表示仅在测试为真时使用此函数。这类测试称为guard。如果guard失败,将尝试下一个函数。

在guards中,使用运算符进行有用的操作。

若要修改程序以查找最小值,只需将大于号改为小于号。但最好更改函数名,如list_min。

变量在作用域内只能绑定一次值。在示例中,Result_so_far被多次绑定,没问题,因为每次调用list_max/2都会创建新作用域。

使用匹配运算符创建和绑定变量也很有用,如M = 5会创建名为M的变量并绑定值5。在相同作用域内再次使用M = 6会引发错误。

匹配运算符用于分离Erlang项并创建新项。

在示例中,X绑定为paris,Y绑定为{f,28}。

尝试使用其他城市将返回错误。

变量可用于提高程序可读性。例如,在list_max/2函数中,可以这样书写,可能更清晰。

声明声明:本网页内容为用户发布,旨在传播知识,不代表本网认同其观点,若有侵权等问题请及时与本网联系,我们将在第一时间删除处理。E-MAIL:11247931@qq.com
2.769033s