ピッケル本を読む(5)第6章 さらにメソッドについて
メモ
以下のコードで疑問だったのが、何で return に達したときに一発でメソッドを抜けてしまわないかということ。
def meth_three 100.times do |num| square = num*num return num, square if square > 1000 end end p meth_three #=> [32, 1024]
試しに、if を無くしてみると…
def meth_three 100.times do |num| square = num*num return num end end p meth_three #=> 0
return の第2引数を nil にしてみると…
def meth_three 100.times do |num| square = num*num return num, nil end end p meth_three #=> [0, nil]
if をずっと nil にしてみると…
def meth_three 100.times do |num| square = num*num return num, square if nil end end # 何で99じゃないの?というより、return は何も返せないんじゃないかな? p meth_three #=> 100
うーん、よくわからん。要は、return に与えた全ての式が評価されなければ return しないってことかな?if修飾子を与えたときは、if修飾子の左辺の式が評価されたときに return が作動するのかな。とりあえずあまり気にしないで先に進む。
- Rubyの慣習では、文字列の代わりにシンボルを使うことが普通らしい
- シンボルを使ったほうが、何かの名前を参照しているのだということが明確になる
# 文字列を使った例 list.create_search('short jazz songs', 'genre' => 'jazz', 'duretion_less_than' => 270) # シンボルを使った例 list.create_search('short jazz songs', :genre => :jazz, :duretion_less_than => 270)
まとめ
メソッドの少し細かい話について学んだ。p71 の「ブロックをもっと動的にする」という項が面白かった。ブロックをうまく使えば、きれいに読みやすいプログラムがつくれそう。