2016-04-02 11 views
-1

Ich weiß für Arrays kann ich Folgendes tun, um die erste rote fallen lassen und die zweite halten. Gibt es ein Äquivalent für Hashes?Gibt es eine Ruby-Methode, die drop_while für Hashes entspricht?

Das Beste, was ich aus vergangenen Fragen bekommen konnte, ist das Folgende, aber es funktioniert nicht ganz.

colors = { 
     first: "red", 
     second: "yellow", 
     third: "green", 
     fourth: "red" 
} 
colors.delete_if{|k,v| v.length < 4 ? true : break } 
+0

Obwohl neuerer Ruby-Hashes ist ‚soft/Einfügen bestellt‘, das ist wirklich nicht außerhalb von Informations/diagnostischen Zwecken verwendet werden. Daher stellen sie keine Operationen dar, die eine Schlüsselreihenfolge herstellen oder darauf angewiesen sind (abgesehen von der Iteration). Ein * könnte * Hash -> Schlüssel-Wert-Array -> x_while -> Hash, aber .. es kann auch darauf hinweisen, dass ein Hash nicht die geeignete Struktur für die gewünschte Aufgabe ist. – user2864740

+0

@ user2864740, ich bitte mich zu unterscheiden. Ich habe Rubys Wartung der Reihenfolge der Schlüsseleinfügung gut genutzt, meine Antwort [http://codereview.stackexchange.com/questions/40776/number-to-words-problem#21293260] ist ein Beispiel. –

+0

Was ist los mit der Verwendung von 'drop_while'? –

Antwort

1
colors.drop_while { |_, v| v.length < 4 } 
+0

Ich wusste nicht, dass es eine 'Enumerable # drop_while' gibt, also habe ich daran gearbeitet 'Hash # drop_while' zu ​​erstellen. Unnötig zu sagen, dass ich diese Anstrengung aufgegeben habe. :-). –

+0

@CarySwoveland deins könnte immer effizienter, schick und neu-Rad-wie :) – mudasobwa

Verwandte Themen