没有块的更简洁的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