配列の特徴
●インデックス指定で要素を取り出す
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メソッド
配列内で条件が最初に真になった要素を取り出す。