2016-08-26 1 views
1

Ich habe was wird wahrscheinlich eine einfache Frage zu beantworten.Ruby Array Index

Ich habe ein Array namens emails.

Ich bin über sie mit emails.each do |email| iterieren.

Was ich sagen will, ist:

# if array index is 0, do this. 

Ich habe if email.index == 0 versucht.

Ich habe versucht, eine Lösung zu finden, kann aber nicht für das Leben von mir finden. Da es nur ein Argument ist, möchte ich eine Case-Anweisung vermeiden.

Antwort

2

versuchen each_with_index

emails.each_with_index do |email, index| 

    if index == 0 
    # do something 
    end 

end 
+0

Obwohl ich verstehe, woher die Leute mit der Aufzählung kommen, ist diese Antwort, was ich suchte. Vielen Dank alle – Tom

1

Wie die Leute gesagt, each_with_index eine gute Wahl ist. Allerdings, wenn Sie möchten, dass Ihre Index von etwas anderes als 0 starten, gibt es eine bessere Art und Weise (beachten Sie, dass der Punkt auf Zweck ist, werden wir Enumerator#with_index hier nennen):

emails.each.with_index(1) do |email, index| 
    # ... 
end 
0

können Sie .each_with_index verwenden es Sie bieten der Index jedes Elements im Array.

zum Beispiel

['a','b','c'].each_with_index {|item, index| 
    puts "#{item} has index #{index}" 
} 

Ausgang

a has index 0 
b has index 1 
c has index 2 
+0

Ich denke, Index beginnt von 0. –

1

Wie die anderen beantwortet, wenn Sie die Aufzählung:

emails.each.with_index([startindex]) do |email, index| 

zB

emails.each.with_index(1) do |email, index| 

Aber wenn Sie dieses Element benötigen, dann können Sie auf direkt wirken wie dieses

emails.first 

, was das gleiche ist wie

emails[0] 
0

Ok. Wenn Sie den Index 0 suchen - Können Sie emials[0] oder emails.at(0) verwenden, oder Sie können E-Mails durchlaufen -

emails.each_with_index do |val, index| 
if index == 0 
# something 
end 
end 

Es ist alles.