LoginSignup
0
0

More than 3 years have passed since last update.

Rubyの配列・ブロックの基礎についてまとめてみた。

Posted at

配列の特徴

●インデックス指定で要素を取り出す

sample.rb
n = [1, 2, 3]
n[1] #=>2

●どんなオブジェクトも混在して入れる事ができる。

s = ['osaka', 1, :hello]

●存在しない要素を指定するとnilが返ってくる

sample.rb
n = [10, 20 ,30]
n[3] #=>nil

●<<で配列の最後に要素を追加できる

sample.rb
food = ["apple", "peech"]
food << "natto"
food #=>["apple", "peech", "natto"]

ブロックについて

メソッド呼び出しの際に引数と一緒に渡すことのできる処理のかたまり | たのしいRuby

例えばこんなものです。

sample.rb
words = ['a','p','p','l','e']
food = "" #カラの文字列

words.each do |w|
  food += w
end

puts food

#=>apple

・do~endまでの中のもの(|n| food += n)は全て引数

・do~endまでのことをブロックと言います。

|n|の部分のことをブロック引数と言い、配列の中の要素をそれぞれ取り出してる

・ちなみに、ブロックの中で定義した変数は、ブロックの中でしか使えない。
しかし、ブロック外で定義した変数はブロック内で使える。

主に使うメソッドとして、eachメソッドやtimesメソッドは共にブロックでよく使用しますが、その時に

頭の中「ブロックを引数として渡しているんやでこれは!」

ってことを意識しながらコーディングしていくことで、ブロックが何か分かってくるのではないでしょうか?

ハッシュもブロック引数として使える

sample.rb
words = ['a','p','p','l','e']
food = "" #カラの文字列

words.each {|w|
  food += w
}

puts food

#=>apple

『do..end』の部分はハッシュ{}に置き換えることもできます

また、1行でまとめて書いてもプログラムとして動きます。

sample.rb
words = ['a','p','p','l','e']
food = "" #カラの文字列

words.each {|w| food += w }

puts food

#=>apple

繰り返しを行う配列メソッドたち

●eachメソッド

配列などのオブジェクトの要素を順番に取り出すもの。

特徴は、
・範囲オブジェクト1..10も取り出せる

sample.rb
numbers = 1..10
numbers.each do |n|
  puts n
end
1
2
3
4
5
6
7
8
9
10

●mapメソッド

カラの配列に、別の配列を埋め込んでいく処理を行う時に使う
新しく配列を作ります。

sample.rb
words = ['b','n','n']
new_words = [] #カラの配列

words.map do |w|
  new_words << w + 'a'
end

puts new_words

#=>["ba", "na", "na"]

●selectメソッド

各要素の戻り値が真の時、新しい配列を返すメソッド。
つまり、書いた条件を満たしてる要素を所得するメソッド。

sample.rb
words = ['ba','na','na']

new_words = words.select { |w| w.include?('n') }

new_words #=>["na", "na"]

●findメソッド

配列内で条件が最初に真になった要素を取り出す。

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