Answers:
title
是局部变量。它们仅存在于其范围内(当前块)
@title
是实例变量-可供类中的所有方法使用。
您可以在此处阅读更多信息:http : //strugglingwithruby.blogspot.dk/2010/03/variables.html
在Ruby on Rails中-在控制器中将变量声明为实例变量(@title
)使它们可用于视图。
区别在于变量的范围。@version可用于该类实例的所有方法。
简短的答案,如果您在控制器中,并且需要使变量对视图可用,则使用@variable
。
要获得更长的答案,请尝试以下操作:http : //www.ruby-doc.org/docs/ProgrammingRuby/html/tut_classes.html
@variable
s在ruby中称为实例变量。这意味着您可以在类内部的ANY METHOD中访问这些变量。[该类中的所有方法]
没有@
符号的变量称为局部变量,这意味着您只能在THAT DECLARED METHOD中访问这些局部变量。限于本地范围。
实例变量示例:
class Customer
def initialize(id, name, addr)
@cust_id = id
@cust_name = name
@cust_addr = addr
end
def display_details
puts "Customer id #{@cust_id}"
puts "Customer name #{@cust_name}"
puts "Customer address #{@cust_addr}"
end
end
在上述例子中@cust_id
,@cust_name
,@cust_addr
在类内的另一方法来访问。但是使用局部变量将无法访问同一件事。
关于什么是可变作用域的教程?很好地呈现了一些细节,只需在此处附上相关内容即可。
+------------------+----------------------+
| Name Begins With | Variable Scope |
+------------------+----------------------+
| $ | A global variable |
| @ | An instance variable |
| [a-z] or _ | A local variable |
| [A-Z] | A constant |
| @@ | A class variable |
+------------------+----------------------+
局部变量只能在其初始化块内访问。此外,局部变量以小写字母(az)或下划线(_)开头。
实例变量是的实例self
并以开头。@
实例变量也属于对象本身。实例变量是您在ie .send
等上执行方法的变量
例:
@user = User.all
该@user
是实例变量
未初始化的实例变量的值为 Nil
@title
&之间的区别title
?
@title
或title
@变量是实例变量,而没有局部变量。
请访问http://ruby.about.com/od/variables/a/Instance-Variables.htm了解更多信息