我通常做['abc', 'defg'].max{|a, b| a.length <=> b.length}
,但这似乎是为了比较两个对象上相同方法的结果而进行的额外输入。
是否有更简洁的方法来执行类似['abc', 'defg'].max(:length)
的操作,这会在每个对象上运行给定的方法进行比较?
答案 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