在Sinatra中,您可以通过两种方式声明变量;之一:
get '/' do
var = 5
end
或
get '/' do
@var = 5
end
为什么要使用其中一种?
另外,你不应该在技术上不能使用@
,因为它不在一个类中,因此实例变量没有意义吗?
答案 0 :(得分:1)
在对象上设置实例变量,你是对的。
但是你也可以在类上使用它们,因为它们也是对象。这可能很难理解,但在ruby中,一切都是对象,因此可以在任何地方设置实例变量(几乎?)。
当你打电话给sinatra'get'时。您正在传递应在对象上下文中运行的块。稍后您可以在视图中使用它。例如。
get '/' do
@var = 5
end
我不确定你应该使用哪一个,如果你在视图中需要它们,我会坚持使用实例@variables,如果你只想在动作/路径中使用它们,我会坚持使用局部变量