2016-03-29 8 views
1

Bu, dizideki son dizine +1'i önlemenin çok yollu bir yoludur. Bunu yakutta başarmanın en iyi yolu nedir? Şimdiden teşekkürler.index + 1 to end_index indeksinden çıkmadan

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

Açıkçası, bu, [_ ..- 1] 'başlangıçtan sona ya da dizi [_...- 1]' (içermez) olduğundan beri dizi [0 .. 2] olmalıdır. . –

cevap

3

bu deneyin:

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

Neden '- 2'? .... –

+1

Çünkü dizideki son dizine geçmek istemiyor değil mi? – leobelizquierdo

+0

Oh, doh; benim hatam. Kendi yorumuma dikkat etmedi. Bir süre bıraktım ve seninkini yanlış okudum. Yuppi. –

3

Ne istediğini yapmak için bir aralığı kullanabilirsiniz. gibi bir şey:

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

-1 son öğe ifade eder ve 3 nokta ... kullanarak münhasıran * son için * İlk gelen tüm unsurları alıyoruz demektir. 2 nokta da sonuncuyu içerir.

Bonus ipucu: ruby'de, diziyi önceden işaretleyerek/değiştirerek each_with_index yerine each kullanarak çoğu zaman uzaklaşabilirsiniz.