码迷,mamicode.com
首页 > 其他好文 > 详细

ErLang在‘形参传递’时可以右向匹配

时间:2014-06-27 18:55:07      阅读:211      评论:0      收藏:0      [点我收藏+]

标签:style   ext   color   数据   问题   name   

在正常情况下:

{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的操作。所以说这样的写法对的,而我之前的想法是错误的。

ErLang在‘形参传递’时可以右向匹配,布布扣,bubuko.com

ErLang在‘形参传递’时可以右向匹配

标签:style   ext   color   数据   问题   name   

原文地址:http://www.cnblogs.com/xiao-L/p/3809755.html

(0)
(0)
   
举报
评论 一句话评论(0
登录后才能评论!
© 2014 mamicode.com 版权所有  联系我们:gaon5@hotmail.com
迷上了代码!