Angenommen, ich habe ein aufzählbares Objekt enum
und jetzt möchte ich das dritte Element erhalten.verweisen einen Enumerator-Wert mit angegebenen Index
Ich kenne einer von einem allgemeinen Ansatz wird in ein Array umwandeln und Zugriff dann mit dem Index wie:
enum.to_a[2]
Aber diese Art und Weise wird eine temporäre Array erstellen und es könnte ineffizient sein.
Jetzt benutze ich:
enum.each_with_index {|v, i| break v if i == 2}
Aber das ist ziemlich hässlich und redundant.
Was ist der effizienteste Weg, dies zu tun?
Das sieht besser aus, aber wenn ich eine sehr große Zahl als Index will, wird es immer noch eine sehr große temporäre Array für sie generiert. –
@ShouYa: Ich habe während des Kommentars eine andere Array-lose Option hinzugefügt. Sie müssen noch nacheinander "Enum" durchgehen, aber Sie können nichts dagegen tun (im Allgemeinen). –
Mit Next ist ein kluger Vorschlag. Ich wäre neugierig zu sehen, was die Implikationen der Performance im Vergleich zur Umwandlung einer Sammlung in ein Array sind. –