2016-04-27 3 views
1

Ich möchte dieseWie würden Sie diese Ruby-Methode vereinfachen, die ein Array basierend auf seinem Inhalt aufteilt?

apples, bananas = sort_basket 

Also habe ich diese Methode

def sort_basket 
    apples = [] 
    bananas = [] 
    basket.each do |fruit| 
    if fruit.apple? 
     apples << apple 
    else 
     bananas << banana 
    end 
    end 
    [apples, bananas] 
end 

Aber ich kann nicht helfen, gemacht tun, aber das Gefühl, es muss eine elegantere und/oder prägnanter Weise, das gleiche zu erreichen, Verhalten für sort_basket.

Wie würden Sie es tun?

+0

Was 'basket' ​​ist? –

+0

Relevante Frage, aber es ist ein Beispiel, das ich erfunden habe und ich dachte, dass es nicht wirklich wichtig war. Es wäre wahrscheinlich eine Reihe von Apple und Banana Objekte;) –

Antwort

5

können Sie partition verwenden, um ein Array zu trennen:

apples, bananas = basket.partition(&:apple?) 
+3

oops, von 15 Sekunden geschlagen :) – tokland

+0

Aaah, das ist, worüber ich rede :) Danke! –