'get' 方法在哪里定义?它是如何在没有对象上调用的?
require 'sinatra'
get '/hi' do
"Hello World!"
end
来自http://www.sinatrarb.com/主页的示例。
'get' 方法在哪里定义?它是如何在没有对象上调用的?
require 'sinatra'
get '/hi' do
"Hello World!"
end
来自http://www.sinatrarb.com/主页的示例。
您不是在“无对象”上调用任何东西,而是require 'sinatra'
在调用它Object
,这会加载库,如果它可以加载,它会为您提供方法get
等。
定义 get 的位置在 Sinatra gem 中,在 lib 文件夹中,在名为 base.rb 的文件中,此代码可能在您的计算机上。
# Defining a `GET` handler also automatically defines
# a `HEAD` handler.
def get(path, opts = {}, &block)
conditions = @conditions.dup
route('GET', path, opts, &block)
@conditions = conditions
route('HEAD', path, opts, &block)
end
为了理解这里发生了什么,您需要对 Ruby 的工作原理有一个基本的了解。这比这里的答案可以或应该回答的要多一点。