如何将Ruby Enumerable类max_by扩展为忽略nil?

B S*_*ven 1 ruby extension-methods overloading enumerator ruby-1.9.3

a = [4, 3, 2, nil]
a.max_by { |v| v * 2 } => NoMethodError: undefined method `*' for nil:NilClass
Run Code Online (Sandbox Code Playgroud)

如何重载max_by以忽略nil值?

Cas*_*per 8

你可以Array.compact在打电话之前用来删除nils max_by.

a.compact.max_by { |v| v * 2 }
Run Code Online (Sandbox Code Playgroud)