经常看到一些写法,比如
array = [['a',5],['b',3],['a',5]]
array.uniq(&:first).sort_by(&:last)
我们知道,&
符号在ruby中是用来调用块的,而 :
符号一般是表示symbol类型,通常用来表示方法,或者调用类的实例变量(实例变量需要在类中用attr_reader或者attr_accessor声明。)
所以,上面的表达方式等同于array.uniq {|a| a.first}.sort_by {|x| x.last}
即先按照数组的第一个元素去重,然后再按照数组的最后一个元素排序。
http://stackoverflow.com/questions/1217088/what-does-mapname-mean-in-ruby参考第一个答案。
网友评论