我正在开发一个包含以下代码的应用程序:
def app
@app ||= begin
if !::File.exist? options[:config]
abort "configuration #{options[:config]} not found"
end
app, myoptions = Rack::Builder.parse_file(self.options[:config], opt_parser)
self.myoptions.merge! myoptions
app
end
end
我正在努力绕过它的几个部分......
@app||= begin...end
这是否意味着如果@app不存在,则运行块?
app ,options = rack::builder
逗号对它做了什么?
请帮忙
答案 0 :(得分:2)
您的第一个假设是正确的,它确实说如果@app
为nil,则将其设置为以begin, end
分隔的块中返回的任何内容。
关于逗号,它的工作原理如下:
avar, bvar = "atest", "btest"
如果您查看Rack:Builder.parse_file
的来源,那么您会注意到最后一行
return app, options
所以它返回两个值。
希望有所帮助
答案 1 :(得分:1)