4

'get' 方法在哪里定义?它是如何在没有对象上调用的?

require 'sinatra'

get '/hi' do
  "Hello World!"
end

来自http://www.sinatrarb.com/主页的示例。

4

1 回答 1

4

您不是在“无对象”上调用任何东西,而是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 的工作原理有一个基本的了解。这比这里的答案可以或应该回答的要多一点。

于 2013-10-05T06:57:17.150 回答