您将如何简化基于其内容拆分数组的ruby方法?

Jer*_* F. 1 ruby refactoring

我想做这个

apples, bananas = sort_basket
Run Code Online (Sandbox Code Playgroud)

所以我做了这个方法

def sort_basket
  apples = []
  bananas = []
  basket.each do |fruit|
    if fruit.apple?
      apples << apple
    else
      bananas << banana
    end
  end
  [apples, bananas]
end
Run Code Online (Sandbox Code Playgroud)

但我不禁觉得必须有更优雅和/或更简洁的方法来实现相同的行为sort_basket.

你会怎么做?

Ste*_*fan 5

您可以partition用来分隔数组:

apples, bananas = basket.partition(&:apple?)
Run Code Online (Sandbox Code Playgroud)

  • 哎呀,打15秒:) (3认同)