2012-08-23 13 views
5

Lütfen birisinin 2..-1 ürününün ne anlama geldiğini açıklayabilir.2 ..- 1 aralığı ne anlama geliyor? (Ruby kons about_arrays.rb)

Yakut koans about_arrays.rb aşağıdaki etti: Bölünmüş verir anlayabiliyorum Bundan Gary Wright, string/array slices :

def test_slicing_with_ranges 
    array = [:peanut, :butter, :and, :jelly] 

    assert_equal [:peanut, :butter, :and], array[0..2] 
    assert_equal [:peanut, :butter], array[0...2] 
    assert_equal [:and, :jelly], array[2..-1] 
end 

(başka bir yanıt bulunamadı) Aşağıdaki web aralıkları dilimleme ile nasıl çalıştığı Cevap ver. Anlamadığım şey, aralık nesnesinin atıfta bulunduğu WHAT aralığıdır. Normal bir aralığı için, ben yapabilirsiniz: irb çalıştırıldığında şu çıktıyı verir

(1..3).each { |x| puts(x) } 

:

1 
2 
3 
=> 1..3e 

Ancak (2..-1).each { |x| puts(x) } verir: aralığını yapar Peki

=> 2..-1 

(2..-1) ne demek?

cevap

11

Negatif bir dizin, "dizinin sonundan sayma" anlamına gelir. Yani -1 dizideki son öğedir. 2..-1, üçüncü öğeden sonuncuya kadar demektir.

+0

Teşekkürler @DragoonWraith. Belki de range nesnesini yanlış düşünürüm. Cevabınızdan, 2 (üçüncü madde) ve -1 (son öğe) sonu olan bir aralık. Sanırım kafamı karıştırmak, bunun bölme bağlamı dışında ne anlama geldiği: 2 ve -1 arasında ne sayıdır? Neden (2 ..- 1) .each 'bir şey yazdırmıyor? – Will

+0

@Will: Dizininizde sadece üç öğe var, bu yüzden 2 'ile sonuncusu arasında hiçbir şey yok; '2' * * sonuncusu. Bu yüzden hiçbir şey görmüyorsun. Daha büyük bir dizi ile denerseniz, bir şeyler görmelisiniz. – KRyan

+1

"2 ile -1" arasında "sayı" - Yok. "neden yapmıyor (2 ..- 1). - Bu yüzden ;-) –