可能重复:
Rails和类变量
请问有谁可以告诉我Ruby实例变量和局部变量之间的区别?
据我所知,实例变量和局部变量都是相同的,并且两者都在方法本身内声明,除了实例变量用@符号表示.
Pet*_*Roe 13
这是一个范围问题.局部变量仅在定义它的方法中可见/可用(即,当方法返回时它会消失).
另一方面,实例变量在已定义它的类的实例中的任何其他位置都是可见的(这与类变量不同,类变量在类的所有实例之间共享).请记住,虽然,当您定义的实例变量是很重要的.如果在一个方法中定义一个实例变量,但在调用第一个方法之前尝试在另一个方法中使用它,则实例变量的值为nil:
def method_one
@var = "a variable"
puts @var
end
def method_two
puts @var
end
Run Code Online (Sandbox Code Playgroud)
@var将具有不同的值,具体取决于您何时调用每个方法:
method_two() # Prints nil, because @var has not had its value set yet
method_one() # Prints "a variable", because @var is assigned a value in method_one
method_two() # Prints "a variable" now, because we have already called method_one
Run Code Online (Sandbox Code Playgroud)
| 归档时间: |
|
| 查看次数: |
4783 次 |
| 最近记录: |