没有块的更简洁的max / min版本

时间:2011-08-17 03:46:10

标签: ruby

我通常做['abc', 'defg'].max{|a, b| a.length <=> b.length},但这似乎是为了比较两个对象上相同方法的结果而进行的额外输入。

是否有更简洁的方法来执行类似['abc', 'defg'].max(:length)的操作,这会在每个对象上运行给定的方法进行比较?

3 个答案:

答案 0 :(得分:13)

['abcd', 'def'].max_by &:length

答案 1 :(得分:8)

这更简洁:

['abc', 'defg'].max_by{|x| x.length }

答案 2 :(得分:0)

对于哈希数组:

roomies = [{:name => "Habib", :age => 24}, {:name => "Tyler", :age => 25}]

roomies.max_by{|a| a[:age]}[:age]

=> 25