1

我在看 Sinatra 并试图理解语法:

require 'sinatra'

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

我知道它是这样做的:

这是一条“路线”。在这里,我们告诉 Sinatra,如果使用普通的 GET HTTP 方法请求主 URL 或根 URL '/',以显示“Hello, World!”</p>

但是 Ruby 语言发生了什么?

  1. 这个语法是什么意思:get '/'get方法和' '是/它的参数吗?如果是方法,那么在 Ruby 中,我可以将方法称为methodname (parameter) {}. 有什么{ }用?
  2. 我通常理解doendas { },它们是功能体的外壳。
  3. 之间我们有“你好,世界!doend这是一个声明吗?我的意思是,它正在被打印出来,但我们没有将它称为print "Hello, World!",所以这是怎么回事?
  4. 这似乎get是 Sinatra 中定义的一种方法,但是如果我添加一个 gem,其中get已经定义了一个方法,那么我怎么知道它会调用哪个“get”方法?或者,它是指 HTTPget方法吗?

如果这个问题听起来很基本,我很抱歉,但我想在继续之前解决它。

4

2 回答 2

1

我可以建议在解决一个更大的问题之前先阅读一个关于 ruby​​ 的教程,比如sinatra一个相当专业的库。

一个好的起点是Ruby Koans

至于你的问题。

  1. get是一种方法。'/'是它的论据。anddo ... end表示 ruby​​ 中的一个块,就像{}would 一样。
  2. 是的,就是do ... end这样
  3. Ruby 中的块返回默认计算的最后一个值,因此在这种情况下,拥有一个字符串与拥有return "String".
  4. 如果你遇到命名空间冲突,Ruby 会抱怨。在这种情况下getsinatra定义的方法get。抽象地,它代表HTTP GET对服务器的请求。
于 2012-10-08T17:24:23.070 回答
0

对于“完美”的回应,我建议你看看 Alan Harris 和 Konstantin Haase 的书“Sinatra Up and Running”。

http://shop.oreilly.com/product/0636920019664.do

第 6 页和第 7 页解释了“get '/' do”这一行实际上是如何调用方法的。

您可以使用 Google Preview 来查看这 2 个页面。

于 2012-10-09T10:03:38.620 回答