2016-03-29 21 views
1

Dies ist meine sehr runden Weg, um +1 auf den letzten Index im Array zu verhindern. Was ist die beste Vorgehensweise, um dies in Rubin zu erreichen? Danke im Voraus.Index + 1 bis mit Index ohne Index

array.each.with_index do |x, index| 
    unless index+1 == array.length 
     if x + array[index+1] == n 
     ... 
+0

Offensichtlich sollte das 'array [0 ..- 2]' sein da '[_..- 1]' von Anfang bis Ende ist, oder 'array [_...- 1]' (nicht inklusive) . –

Antwort

3

Versuchen Sie folgendes:

array[0..-2].each.with_index do |x, index| 
     if x + array[index+1] == n 
     ... 
+0

Warum '- 2'? .... –

+1

Weil er nicht zum letzten Index im Array kommen will oder? – leobelizquierdo

+0

Oh, doh; mein Fehler. Hab nicht auf meinen eigenen Kommentar geachtet. Ich habe eine Zeit vergessen und deine falsch gelesen. Yay. –

3

Sie einen Bereich verwenden können zu tun, was Sie wollen. Etwas wie:

array = [0, 1, 2, 3, 4] 
array[0...-1].each do |x| 
    print x 
end 
# =>

-1 bezieht sich auf das letzte Element, und mit 3 Punkten ... bedeutet, Sie nehmen alle Elemente von der ersten bis zur letzten * ausschließlich *. 2 Punkte würden auch die letzte enthalten.

Bonus-Tipp: In Ruby können Sie die meiste Zeit mit each statt each_with_index wegkommen, indem Sie das Array vorher culling/modifizieren.