return と putsの違い
どちらも文を表示させる機能だが、メソッドを終了させるかどうかという点が異なる。
return
・メソッドから脱出できる
・戻り値を受け取るだけ(putsしないと表示されない)
puts
・メソッドを終了させない
returnを使うとdefから脱出できる
def condition(money = "")
return "お金がない" if money.empty?
"お金持ち"
end
puts condition("")
returnを使わないとdefから脱出できない
def condition(money = "")
"お金がない" if money.empty?
"お金持ち"
end
puts condition("")
最後の文だけが機能するため、どんな値を入れても「お金持ち」しか表示されない
selfの重要性
selfを用いた場合
class Menu
attr_accessor :name
attr_accessor :price
end
def info
return "#{self.name} #{self.price}円"
end
selfを用いない場合
class Menu
attr_accessor :name
attr_accessor :price
end
def info
return "#{name} #{price}円"
end
これらは出力値が同じだが、文法的にselfを使う意味はあるのか?
【結論】同名のローカル変数があるときに区別するためにselfを使用する
上記の例で言えば、複雑なプログラムを書くときにどの「name」か判別するためにselfを使用する