-
始めに
週1回以上を目標に、この例題解説記事を継続していきます。
書き慣れてきたら、別の題材の記事にも挑戦していきます。
-
例題
Q .下記の実行結果を得るためのコードを選択肢の中から選べ。
id = [1, 2, 3, 4, 5] [コード実行] => [3, 4]
① p id.slice(3..4)
② p id.slice(-3, 3)
③ p id[-3..3]
④ p id[2, 3]
解説をみる前に答えを予想してみて下さい。
↓下に解説があります。↓
-
解説
各選択肢毎に解説し、最後にまとめて結果を表示する。
-
事前説明
[1*]配列.slice(n)
は、指定されたインデックス(配列番号n番目)の要素を戻り値として返すメソッド。配列に直接インデックスを指定する方法と同じ結果になる(下記参照)。id = [1, 2, 3, 4, 5] p id.slice(0) # silceメソッド使用 => [1] p id[0] # 直接指定 => [1]
-
①
配列のインデックス指定方法として(a, b)
とした場合、a 番目から b 個分
の要素を選択できます。
今回は(3..4)
の為、3番目から4番目まで
(コンピューター上では 0 から数えるので、人間的な数え方としては 4~5 番目の意味) のインデックスの要素が選ばれるので、結果は『[4, 5]』です。 -
②
インデックスの指定方法として(-a, b)
とした場合、後ろから数えてa 番目から b 個分
の要素を選択できます (※)。
今回は(-3, 3)
なので、後ろから3番目から3個分
が表示され、結果は『[3, 4, 5]』となります。# (※)... インデックスの指定が後ろからの場合は0 からではなく-1 から数える。 id = [1, 2, 3, 4, 5] # と定義した場合、↓の様にインデックスが指定される。 # 虚数配列(存在しない) ← | → 本来の配列 # [ 1, 2, 3, 4, 5] [ 1, 2, 3, 4, 5] # ↑ ↑ ↑ ↑ ↑ ↑ ↑ ↑ ↑ ↑ # -5, -4, -3, -2, -1, 0, 1, 2, 3, 4 ..... インデックス(配列番号)
-
③
今回は[-3..3]
の為インデックス-3~3
の要素 ([1*]、選択肢①参照) となりますが、id[-3,-2,…,2,3]
の7つを表示するわけではありません。
インデックスがマイナスの場合は本来のインデックスに戻してからその間の要素を返す為、[-3..3] = [2..3]
(選択肢②の(※)参照) となり結果は『[3, 4]』になります。 -
④
今回は[2, 3]
の為インデックス3から3個分
の要素 ([1*]、選択肢②参照) が表示されるので、結果は『[3, 4, 5]』になります。irb(main):004:0> id = [1, 2, 3, 4, 5] => [1, 2, 3, 4, 5] irb(main):005:0> p id.slice(3..4) # 1 [4, 5] => [4, 5] irb(main):006:0> p id.slice(-3, 3) # 2 [3, 4, 5] => [3, 4, 5] irb(main):007:0> p id[-3..3] # 3 [3, 4] => [3, 4] irb(main):008:0> p id[2, 3] # 4 [3, 4, 5] => [3, 4, 5]
よって答えは『③ p id[-3..3]』
-