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

wer*_*mon 4 ruby

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

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

Dig*_*oss 13

['abcd', 'def'].max_by &:length
Run Code Online (Sandbox Code Playgroud)


Dav*_*son 8

这更简洁:

['abc', 'defg'].max_by{|x| x.length }
Run Code Online (Sandbox Code Playgroud)

  • +1 - 比投票答案简洁,但更具可读性. (2认同)