Ruby变量与Sinatra中的实例变量

时间:2014-01-04 18:58:14

标签: ruby sinatra

在Sinatra中,您可以通过两种方式声明变量;之一:

get '/' do
    var = 5
end

get '/' do
    @var = 5
end

为什么要使用其中一种?

另外,你不应该在技术上不能使用@,因为它不在一个类中,因此实例变量没有意义吗?

1 个答案:

答案 0 :(得分:1)

在对象上设置实例变量,你是对的。

但是你也可以在类上使用它们,因为它们也是对象。这可能很难理解,但在ruby中,一切都是对象,因此可以在任何地方设置实例变量(几乎?)。

当你打电话给sinatra'get'时。您正在传递应在对象上下文中运行的块。稍后您可以在视图中使用它。例如。

get '/' do
  @var = 5
end

我不确定你应该使用哪一个,如果你在视图中需要它们,我会坚持使用实例@variables,如果你只想在动作/路径中使用它们,我会坚持使用局部变量