首页 > 代码库 > ErLang在‘形参传递’时可以右向匹配
ErLang在‘形参传递’时可以右向匹配
在正常情况下:
{A,B,C} = {1,2,3}.
但是不可以{1,2,3} = {A,B,C} .
可是数据当作参数传递时,却可以右向匹配,如:
print({name,Name}=NameTup,{age,Age}) ->和
print(NameTup={name,Name},{age,Age}) ->
这两种方法都可以将NameTup匹配到第一个参数上.
修改:换个思路想这个问题,其实所谓的右向匹配,即第一种写法,只是先把参数匹配到NameTup上然后再级联匹配到{name,Name}上。所以说上面的说法是错误的。
特别地,像如果参数是Record时:
-record(person,{name={‘Lastname‘,‘Firstname‘},age,sex}).
printHW2(#person{name = {_,Name},age = Age} = SomeOne) ->
匹配record内的元素时,还必须右向匹配。不知道是不是语法上的BUG。。。
同样的,这里的思路可以理解成,参数先匹配到SomeOne上,然后再级联到一个匿名{_,Name}和Age上,接下来就是new一个record的操作。所以说这样的写法对的,而我之前的想法是错误的。
声明:以上内容来自用户投稿及互联网公开渠道收集整理发布,本网站不拥有所有权,未作人工编辑处理,也不承担相关法律责任,若内容有误或涉及侵权可进行投诉: 投诉/举报 工作人员会在5个工作日内联系你,一经查实,本站将立刻删除涉嫌侵权内容。