Ruby Sliver試験によくでる組み込みライブラリの配列問題。
よく???になるのでメモ。
こんな感じでよく出題される。
問題)
以下の実行結果になるように、Xに記述する適切なコードを選びなさい。(2つ選択)
a = [ 1, 2, 3, 4]
x.each do |i| print i, " " end
<!-- 実行結果 -->
1 2 3
答え)
Silver試験でよく出る配列の添字演算子[ ]ですね。
配列の負の添字は、最後の要素から逆順に要素を指定する番号です。最後の要素は-1
、-
は配列の個数です。
なので、この問題の場合はどうなるかというと。
a = [ 1, 2, 3, 4]
の4
の要素が-1
になるわけです。今回の問題の場合は、実行結果が1 2 3
になるようにしなければならないので、0から-2が正解になります。
# 要素
-4 -3 -2 -1
a = [ 1, 2, 3, 4]
# 試しに1を参照
irb > p [-4]
=> 1
そして、この問題にはまだ引っ掛けがあります。..
と...
の範囲の違いです。これは単に右側の数値を含むか否かの違いだけ。
覚え方は、..
は二文字だから「含む」、...
は二文字以上だから「含まない」。
というわけで、a[0..-2]を日本語的に直すと「aの配列の0番目から要素の-2を含む(3)」までとなります。
これは超単純。
カンマ
は、配列のある位置からの個数を指定するので、この場合は、0番目から3個の要素を参照する。