2010-12-12 11 views
1

可能性の重複:私のRubyインタプリタ上でこのコードを実行する
Array slicing in Ruby: looking for explanation for illogical behaviour (taken from Rubykoans.com)Rubyの配列なインデックス

それは何も

を出力しない7..4出力ゼロ、そして6..4で終了
arr = [1, 2, 3, 4, 5, 6] 

p arr[7..4] 
p arr[6..4] 

最初のインデックスが範囲外である場合、ルビドキュメントによると、これはnilを返します。このca both(6 & 7)は配列の範囲外ですが、最初のものだけがnilを返します。

clairificationの編集次のように出力される。

nil 
[] 

なぜ第1リターンゼロと[]第二のでしょうか?

+0

重複していません。この質問では、 '、'の代わりに '..'があり、境界が反転しています。 – Nakilon

+1

@Nakilon:違いはありません。重要なのは最初のインデックスです。 @Paul:スライスの結果が何であるかについての混乱や 'puts'自体の結果は避けるため、' puts'を 'p'で変更する必要があります。 –

+0

OK、本当に、私は再読しました。 – Nakilon

答えて

1

まあ、おそらく通訳が「減少」の範囲を理解していないが、

puts arr[3..1] 

をしようとすることも[3..1]が範囲ではないかもしれないので、何も返されません。 [] s

+1

それは問題の種類、1つは空[]を返し、もう1つは値nilを返します。彼らはnilを返すか、[]を返すべきである(SHOULD)。違いがあれば、これはosxの1.8.7上にあります。 – Paul

+1

Rubyでは、「反転」範囲を使用して配列をスライスしています。例えば: '[1,2,3,4] [1 ..- 2]'は '[2、3]'を返します。 –

+0

笑、私は知らなかった。ニース!ありがとう@Mladen – Cloudson

関連する問題