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

我通常做['abc', 'defg'].max{|a, b| a.length b.length} ['abc', 'defg'].max{|a, b| a.length b.length} ,但这似乎是很多额外的打字来比较两个对象上相同方法的结果。

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

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

这更简洁:

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

对于哈希数组:

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