初心者Rubyのメモ vol_04

今回はクラスのことをやろうと思っていましたが、その前に、ブロックと%記法を先にやる。

eachメソッドの時、
「eachメソッドを使うためにブロック、ブロックパラメータとかいうものがあるみたいです」とか、「ブロックとは、doからendまでのプログラムのひとかたまりの部分」とか、「| |がブロックパラメータ(変数?)これがよくわからん。」とか適当すぎたので穴埋めします。

・ブロック
ブロックとは、オブジェクトの要素や値を1つずつ取り出して処理すること
ブロックを利用すれば、while文やfor文などを使った繰り返し処理簡単にかける。do~endの代わりに{}で囲って省略できる。

・ブロックパラメーター(ブロック変数)
繰り返し処理の中で、今何回目の繰り返し処理であるかを知りたい場合、ブロックパラメーターを利用する。
ブロックパラメーターが利用できるメソッドのことをブロック付きメソッドっていうらしい

・timesメソッド
.timeの前に指定した数値分処理を実行できる

3.times do
puts "円環の理"
end
#円環の理
#円環の理
#円環の理
2.times {
puts "ソウルジェムが魔女を産むならみんな死ぬじゃない。アナタも私も"
}
#ソウルジェムが魔女を産むならみんな死ぬじゃない。アナタも私も
#ソウルジェムが魔女を産むならみんな死ぬじゃない。アナタも私も
100.times do |i|
puts "ティロ・フィナーレ" + (i+1).to_s + "発目"
end
#ティロ・フィナーレ1発目
.
.
#ティロ・フィナーレ100発目

・uptoメソッド、downtoメソッド
引数に指定した値までの繰り返しを実行する。ブロック変数は0から始まらない点に注意

3.upto(5) do |i|
puts "もう何も怖くない。私、ひとりじゃないもの" + i.to_s + "人"
end
#もう何も怖くない。私、ひとりじゃないもの3人
#もう何も怖くない。私、ひとりじゃないもの4人
#もう何も怖くない。私、ひとりじゃないもの5人
5.downto(3) {|i|
puts "もう何も怖くない。私、ひとりじゃないもの" + i.to_s + "人"
}
#もう何も怖くない。私、ひとりじゃないもの5人
#もう何も怖くない。私、ひとりじゃないもの4人
#もう何も怖くない。私、ひとりじゃないもの3人

・yieldメソッド
自作メソッドの中で、yieldメソッドの引数にブロックパラメーターに渡す値を指定する。繰り返しの回数はyieldメソッドの回数分と考えればいいらしい。

yieldメソッドによってキャラの名前がブロックパラメーターに渡され、順に出力される

def madomagi
yield "鹿目まどか"
yield "暁美ほむら"
yield "美樹さやか"
yield "巴マミ"
yield "佐倉 杏子"
yield "キュゥべえ"
end
madomagi do |i|
puts i
end
#鹿目まどか
#暁美ほむら
#美樹さやか
#巴マミ
#佐倉 杏子
#キュゥべえ

・引数ありのブロック付きメソッドの作り方
for文によって、0からmagica-1まで繰り返すので、yieldメソッドはmagica回-1実行される。繰り返した回数*2がブロック変数|i|に入り、for回数分出力される

def madomagi(magica)
for i in 1..magica-1
yield "キュゥべえ" + (i*2).to_s + "体目"
end
end
madomagi(6) do |i|
puts i
end
#キュゥべえ2体目
#キュゥべえ4体目
#キュゥべえ6体目
#キュゥべえ8体目
#キュゥべえ10体目

・まとめ
ブロック付きメソッドを利用すると、繰り返し処理によってオブジェクトの要素などを全て処理したり、毎回の処理の際にブロックパラメーターに値を渡してもらったりすることができる。

yieldメソッドを使えば、ブロック付きのメソッドを自作することもできる。自作のブロック付きメソッドからブロックパラメーターに値を渡せる。yieldメソッドを実行する回数が繰り返し回数になる。

・%記法
()…カッコ内に入るものは、”” , で囲む必要がない
%の後のアルファベットが大文字なら変数・定数の展開ができる

・%、%Q
要素が文字列を作る
変数・定数の展開もできる。

madomagi = %(
鹿目まどか
暁美ほむら
美樹さやか
"巴マミ"
)
puts madomagi
#鹿目まどか
#暁美ほむら
#美樹さやか
#"巴マミ"
kyoko = "佐倉杏子"
madomagi1 = %Q(
鹿目まどか
暁美ほむら
美樹さやか
"巴マミ"
#{kyoko}
)
puts madomagi1
#鹿目まどか
#暁美ほむら
#美樹さやか
#"巴マミ"
#佐倉杏子

・%q
要素が文字列を作る
変数・定数の展開はできない。

madomagi = %q(
鹿目まどか
暁美ほむら
美樹さやか
"巴マミ"
)
puts madomagi
#鹿目まどか
#暁美ほむら
#美樹さやか
#"巴マミ"
kyoko = "佐倉杏子"
madomagi1 = %q(
鹿目まどか
暁美ほむら
美樹さやか
"巴マミ"
#{kyoko}
)
puts madomagi1
#鹿目まどか
#暁美ほむら
#美樹さやか
#"巴マミ"
##{kyoko}

・%W
要素が配列を作る。変数・定数の展開ができる。

・%w
要素が配列を作る。変数・定数の展開ができない。

・%I
要素がシンボルの配列を作る。変数・定数の展開ができる。

・%i
要素がシンボルの配列を作る。変数・定数の展開ができない。

次回は必ずクラスやる。1日でまとめる自信はない。

One clap, two clap, three clap, forty?

By clapping more or less, you can signal to us which stories really stand out.