Pocket

rubyでメソッド名と変数名が被ったらどうなるのか気になったので、試してみました。

[ruby]
def sample()
return "sample"
end
p sample
sample = "not method"
p sample
[/ruby]

の実行結果は

“sample”
“not method”

になります。

メソッド名に変数名を代入したらずっと変数のままのようです。
しかし、「()」をつけると、メソッドとして認識してくれます。
以下のようなコードを実行した際、

[ruby]
def sample()
return "sample"
end
p sample
sample = "not method"
p sample
p sample()
[/ruby]

“sample”
“not method”
“sample”

といった実行結果が得られます。
なるほど。末尾に「()」がついていればそれはメソッドということのようです。
ちなみに末尾に「()」が付いた状態で何かを代入しようとすると、エラーが出ます。

末尾の「()」はずしたら、変数としても使って良いよ。
「()」ついてればそれはメソッドだからね。

という感じでした。

Pocket