2016-11-04 7 views
-1

Rubyは変数とメソッドの違いを、同じ名前で同じスコープの場合にどのように伝えることができますか?両者は何かを呼ばれているので、私は混乱しています変数とメソッド名のスコープが同じ場合、Rubyは変数とメソッド名の違いをどのように伝えることができますか?

def something 
"33" 
end 

something = "44" 

something # --> calling something (variable or method?) 

は、シナリオを考えます。私の質問は2つの部分です:

A)どちらが勝つだろうか:変数か方法と、なぜですか?

B)Rubyが2つを区別できる方法はありますか?何か(変数)と何か(メソッド)を呼び出すことができますか?

答えて

3

変数は、最初のだろうが、あなたはメソッドを呼び出すことができます。

なぜ質問

def foo 
    33 
end 

foo = 44 

>foo 
#=> 44 
>foo() #also you can call it by: self.foo || My omission, thanks @CarySwoveland 

#=> 33 

?それ以外の場合は、より多くのために、また、変数

を参照することはできないので、

ローカル変数がbracketlessメソッド呼び出しよりも優先されます:

@SergioTulentsevは良い答えを与えましたあなたが読むことができるメソッドと変数についての情報here

+0

なぜ説明できますか? – the12

+1

@ the12ローカル変数はブラケットレスメソッド呼び出しよりも優先されます。そうしなければ、変数を参照することができなくなるからです。 –

+0

@ the12 Sergio Tulentsevに加えて、[この文書](https://docs.ruby-lang.org/en/2.0.0/syntax/assignment_rdoc.html#label-Local+Variables+and+Methods)を読むことができます。それはより多くの情報になるはずです –

関連する問題