我们知道, &符号在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 参考第一个答案。
返回第一个元件,或第一元素,可枚举的。如果枚举是空的,第一种形式返回nil ,而第二种形式返回一个空数组。%w[foo bar baz].first #=>"foo"
%w[foo bar baz].first(2) #=>["foo", "bar"]
%w[foo bar baz].first(10) #=>["foo", "bar", "baz"]
[].first #=>nil
为什么要数组? 用gets函数就可以了获得键盘的输入。你可以去irb里面试一下: puts "I am #{puts}" 例如: names = [] names.push(gets) 这样,输入的内容就成了数组里面的第一个元素。这个是你想要的吗?