发布网友 发布时间: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函数中,可以这样书写,可能更清晰。