2011-09-23 39 views
5

thể trùng lặp:
Is there some kind of unseen Array termination in Ruby?
Array slicing in Ruby: looking for explanation for illogical behaviour (taken from Rubykoans.com)Tại sao mảng Ruby [array.length, count] trả về []?

a = %w[a b c] 
a[3, 1] # => [] 
a[4, 1] # => nil 

bất cứ ai có thể giải thích lý do tại sao a [3, 1] lợi nhuận []? Tại sao không phải nil thay thế?

Cảm ơn bạn.

+0

Bạn có nghĩa là 'mảng [array.index, array.length]'? Tiêu đề của bạn hơi khó hiểu. – lemoncider

+0

@lemoncider Có, tiêu đề hơi khó hiểu, nhưng tôi chỉ muốn chỉ định rằng ** array.index ** tương đương với ** array.length **. –

Trả lời

3

Vâng, có vẻ như Ruby core documentation chỉ đánh dấu trường này là "trường hợp đặc biệt". Theo The Ruby Programming Language (O'Reilly, 2008), nhận xét về trường hợp này là:

a[arr_len, len] #=> [], empty array right at the end 
a[arr_len + 1, len] #=> nil, nonthing beyond that 

Không giải thích thêm được đưa ra. Vì vậy, tôi nghĩ bạn nên nhớ "trường hợp đặc biệt".

Các vấn đề liên quan