「返り値・スコープ」の概念を知ろう!
問題
以下のコードを実行すると、ターミナルにはなんと表示されるでしょうか?
def rename(name)
name = "#{name}::CAMP"
return name
end
name = "TECH"
rename(name)
puts name
解くまでの流れ
[ざっくり全体のコードを見る]→[雰囲気で判断してしまい引っかかる]→[読み直して理解する]
1.ざっくり全体のコードを見る
パッと見た時にメソッドを用いて、何かを出力するんだなと認識する
2.雰囲気で判断してしまい引っかかる
このメソッドはリネームするためのもので下の"TECH"が引数として渡され"TECH::CAMP"と表示されると思っていた
3.読み直して理解する
順に見ていくと、まず変数nameに"TECH"が代入される。続いてrename(name)
メソッドを呼び出す。メソッド内の変数は「引数::CAMP」となっていて、それをreturn
返り値として返しているだけなので出力はされない。そして最後のputs name
ではメソッドは関係ないのでそのまま"TECH"が出力される。