2
0

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?

More than 1 year has passed since last update.

Ruby2.1技術者認定試験 Silver (例題解説).002

Last updated at Posted at 2023-06-13
  • 始めに

    週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]





  • 最後に

    確認としてid = [1, 2, 3, 4, 5, 6, 7, 8, 9, 10]を定義して、上と同じ条件の出力や上と同じ出力になる条件を探して色々遊んでみて下さい。

    「こんな条件、どこで使うん?」と思うものも、勉強していく上で使える場面が見つかることもあります。
    (個人的には、今回のsilceメソッドや③の指定方法等)

    同じ結果になる色々な条件やメソッドを知り、クライアントの求めている条件に合った方法の条件式が書けるよう、一緒に頑張っていきましょう。




    最後まで読んでいただき、ありがとうございました。

2
0
0

Register as a new user and use Qiita more conveniently

  1. You get articles that match your needs
  2. You can efficiently read back useful information
  3. You can use dark theme
What you can do with signing up
2
0

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?