0
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.

Ruby Arrayオブジェクト 配列の基礎知識

Last updated at Posted at 2022-04-20

push, <<

配列に要素を追加することができる。

arr = []
arr.push('りんご') => ["りんご"]
arr << 'みかん' => ["りんご", "みかん"]

%記法(パーセント記法)

'"を別の文字に置き換えて書くことができます。

arr = %w[りんご みかん] => ["りんご", "みかん"]
arr2 = %w! りんご みかん! => ["りんご", "みかん"]
arr3 = %w(りんご みかん) => ["りんご", "みかん"]

%wの場合、シングルクォート''で囲ったのと同じ動作になります。

a = 'んご' => "んご"
b = 'かん' => "かん"
arr = %W[り#{a}#{b}] => ["りんご", "みかん"]

%Wの場合、ダブルクォート""で囲ったのと同じ動作になるため、式展開やバックスラッシュ記法を使用することができます。

繰り返し処理

eachメソッド

配列の要素の数だけブロック内で処理を繰り返します。

arr = %w[ りんご みかん ぶどう] => ["りんご", "みかん", "ぶどう"]

arr.each do |fruit| 
  break if fruit == 'ぶどう'  
  puts fruit  
end

# 出力結果
# りんご
# みかん
=> nil

breakを使用することで繰り返し処理を終了することができます。
上記の場合、後置if文を使用してfruitぶどうの場合に繰り返し処理が終了します。

arr = %w[ りんご みかん ぶどう]
=> ["りんご", "みかん", "ぶどう"]

arr.each do |fruit| 
  next if fruit == 'ぶどう'
  puts fruit
end

# 出力結果
# りんご
# みかん
=> ["りんご", "みかん", "ぶどう"]

また、上記のように nextを使用することで一部の繰り返し処理をスキップさせることができます。

mapメソッド

配列の要素の数だけブロック内で処理を繰り返し、新しい配列を返します。

arr = ["りんご", "みかん", "ぶどう"]

arr.map { |fruit| "(#{fruit})" }
=> ["(りんご)", "(みかん)", "(ぶどう)"]

一部要素のみ取得したい場合

arr = [{id: 1, name: 'りんご'}, {id: 2, name: 'みかん'}, {id: 3, name: 'ぶどう'}]

arr.pluck(:name)
=> ["りんご", "みかん", "ぶどう", "りんご"]

多重代入

左辺に変数をカンマ区切りで記述し、右辺には左辺に記述した変数に代入するオブジェクトや式などをカンマ区切りで記述することで、複数の変数にまとめてオブジェクトを代入することができます。

foo, bar = [1, 2]
foo => 1
bar => 2

# []は省略可
foo, bar = 1, 2
foo => 1
bar => 2

foo, bar  = 1
foo => 1
bar => nil

右辺の要素に対して左辺の変数が多い場合は無視され、
左辺の変数が右辺の要素より多い場合、代入される要素がない変数には「nil」が代入されます。

参考教材

0
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
0
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?