我的问题与以下3个代码摘录有关:
类方法代码:start(options = nil)
# File 'lib/rack/server.rb', line 136
def self.start(options = nil)
new(options).start
end
实例方法代码:#initialize(options = nil)
# File 'lib/rack/server.rb', line 174
def initialize(options = nil)
@options = options
@app = options[:app] if options && options[:app]
end
实例方法代码:#start
# File 'lib/rack/server.rb', line 229
def start
if options[:warn]
$-w = true
end
...# more lines that are not related to my question
end
我的问题是,实例方法options
中的局部变量start
应该是@options
吗?在我的选项中,因为前两个摘录显示选项作为参数传递给initialize
,并使其成为实例变量@options
,所以在实例方法启动时,它应该将其引用为{ {1}},而不是@options
,因为#start无法访问options
的范围
答案 0 :(得分:5)
在同一个类中,有选项的getter方法:
# File 'lib/rack/server.rb', line 180
def options
@options ||= parse_options(ARGV)
end
options
中的 #start
是对此方法的调用,而不是局部变量。