【发布时间】:2017-03-22 21:56:30
【问题描述】:
我对范围的理解
我长期从事 Javascript 开发,对此我已经习惯了……
var globalVar = "some value";
getGlobalVar = function(){
alert(globalVar);
}
getGlobalVar();
在 Javascript 中,在函数之外定义的所有内容都附加到窗口对象并成为全局范围的一部分。任何属于全局范围的任何东西都可以在任何函数中访问——至少据我所知。我正在尝试在 Ruby 中做类似的事情,但出现错误。
问题
这是我的代码工作方式:
# create CoreController
SINATRA = Sinatra
module Apollo
class Sinatra < SINATRA::Base
configure :development do
register SINATRA::Reloader
also_reload "app/**/*.rb"
dont_reload "lib/**/*.rb"
end
include CoreHelpers
include Helpers
# ----- Config ------
configure do
set :public_folder, Apollo.config[:sinatra][:public]
set :views, Apollo.config[:sinatra][:views]
set :static_cache_control, [:public, {:max_age => 600}]
enable :sessions
# Set the session secret
set :session_secret, "secret"
end
end
end
我添加了 SINATRA = Sinatra 作为 hack,因为我无法在 class Sinatra < SINATRA::Base 中访问 Sinatra::Reloader。
这就是我希望代码的样子:
# create CoreController
module Apollo
class Sinatra < Sinatra::Base
configure :development do
register Sinatra::Reloader
also_reload "app/**/*.rb"
dont_reload "lib/**/*.rb"
end
include CoreHelpers
include Helpers
# ----- Config ------
configure do
set :public_folder, Apollo.config[:sinatra][:public]
set :views, Apollo.config[:sinatra][:views]
set :static_cache_control, [:public, {:max_age => 600}]
enable :sessions
# Set the session secret
set :session_secret, "secret"
end
end
end
这是我得到的错误:
将此代码放入类中如何改变范围?全局变量不应该在任何地方都可以访问吗?感谢您提供任何和所有帮助。
【问题讨论】: