🐻‍❄️

Ruby 配列

2023/02/05に公開

puts print pメソッド

putsメソッドと似たような処理で
printメソッドとpメソッドというものがある

putsメソッド

puts 'nakamura'
nakamura
=> nil

putsメソッドは改行を加えて
変数の内容やメソッドの戻り値を
ターミナルに出力する

putsメソッドの戻り値はnilとなる

printメソッド

print 'nakamura'
nakamura => nil

printメソッドは改行されない
戻り値はnilとなる

pメソッド

p 'nakamura'
"nakamura"
=>"nakamura"

デバック用のメソッド

デバックとはバグ(プログラムの不具合)をとること
pメソッドの戻り値は引数のオブジェクト

配列

配列とは

  • 複数のデータをまとめて格納できるオブジェクトのこと
  • 配列内のデータ(要素)は順番に並んでいて、添字(インデックス)を指定することでデータを取り出せる

配列の作成

  • 空の配列を作る
    []

  • 3つの要素が格納された配列を作る
    [要素1,要素2,要素3]


irbを使って

配列の定義

a = [1, 2, 3, 'aa', [1, 2, 3]]

一つの配列に数字や文字、配列を混在させることも仕様上は可能

配列の一つ目の値1を取り出す

a[0]
=> 1

二つ目

a[1]
=> 2

配列をputsで取り出すと

puts a
1
2
3
aa
1
2
3
=> nil

配列が空かどうか確認する

a.empty?
=> false

空ではないのでfalseが返ってくる

配列の要素に特定の要素が存在するか確認する

a.include?('aa')
=> true

aaは存在するのでtrueが返ってくる
存在しない場合falseが返る

配列の反転

a.reverse
=> [[1, 2, 3] "aa", 3, 2, 1]

配列の反転の破壊的メソッド

a.reverse!
=> [[1, 2, 3] "aa", 3, 2, 1]

a
=> [[1, 2, 3] "aa", 3, 2, 1]

シャッフル

ランダムで配列の並び順がシャッフルされる

a.shuffle
=> [1, 2, "aa", [1, 2, 3], 3]

0から25の要素を持つ配列を作成する

(0..25).to_a
=> [0, 1, 2, 3, 4, 5, 6, 7, 8, 9, 10, 11, 12, 13, 14, 15, 16, 17, 18, 19, 20, 21, 22, 23, 24, 25]
(0..25)

この部分は範囲を表す範囲オブジェクト
便利なので覚えておく!!

0から10の要素を持つ配列を作成

z = (0..10).to_a
=> [0, 1, 2, 3, 4, 5, 6, 7, 8, 9, 10]

配列の最後に要素を追加する

z << 20
=> [0, 1, 2, 3, 4, 5, 6, 7, 8, 9, 10, 20]

z
=> [0, 1, 2, 3, 4, 5, 6, 7, 8, 9, 10, 20]

最後に20が追加された

pushメソッドを使う方法もある

z.push(30)
=> [0, 1, 2, 3, 4, 5, 6, 7, 8, 9, 10, 20, 30]

z
=> [0, 1, 2, 3, 4, 5, 6, 7, 8, 9, 10, 20, 30]

最後に30が追加された

配列の末尾の要素を削除し、その要素を返す

z.pop
=> 30

z
=> [0, 1, 2, 3, 4, 5, 6, 7, 8, 9, 10, 20]

最後の30が削除された

配列の最初の要素を削除し、その要素を返す

z.shift
=> 0

z
=> [1, 2, 3, 4, 5, 6, 7, 8, 9, 10, 20]

最初の0が削除された
削除した要素が戻り値に返ってきている

配列に要素を追加する

z << 3
=> [1, 2, 3, 4, 5, 6, 7, 8, 9, 10, 20, 3]

z << 6
=> [1, 2, 3, 4, 5, 6, 7, 8, 9, 10, 20, 3, 6]

3と6が追加された!

ユニークメソッド

ユニークメソッドは配列の中で重複する要素を削除して新しい配列を返す

z.uniq
=> [1, 2, 3, 4, 5, 6, 7, 8, 9, 10, 20]

z
=> [1, 2, 3, 4, 5, 6, 7, 8, 9, 10, 20, 3, 6]

重複は無くなった!
が、元の変数には変更は加えられていない

変更を加えたいときは

z.uniq!
=> [1, 2, 3, 4, 5, 6, 7, 8, 9, 10, 20]

z
=> [1, 2, 3, 4, 5, 6, 7, 8, 9, 10, 20]

破壊的編集が行われた

配列の要素の結合

s = ['my', 'name', 'is', 'nakamura']
=> ["my", "name", "is", "nakamura"]

s.join
=> "mynameisnakamura"

このように配列の配列の各要素を文字列に変換して結合される

セパレータを指定したいときは()で囲って指定

s = ['my', 'name', 'is', 'nakamura']
=> ["my", "name", "is", "nakamura"]

s.join(' ')
=> "my name is nakamura"

スペースで区切って連結された

配列のソート(並び替え)

s.sort
=> ["is", "my", "nakamura", "name"]

このように、若い順で並び替えられた

配列のサイズ(個数)を表示する

個数メソッド

s.size
=> 4

配列の個数が返ってくる


違う言語でやったことあるものが出てくると
理解早くてたすかる!!
まだ全然使いこなせるわけじゃないけど、楽しくなってきた🥺

Discussion