我在看Sinatra并试图理解语法:
require 'sinatra'
get '/' do
"Hello, World!"
end
我明白这样做:
这是一条“路线”。在这里,我们告诉Sinatra,如果使用普通的GET HTTP方法请求home或root,URL'/',则显示“Hello,World!”
但是Ruby语言发生了什么?
get '/'
? get
是一种方法,“/
”是一个参数吗?如果是方法,那么在Ruby中,我可以将方法称为methodname (parameter) {}
。什么是{ }
?do
和end
理解为{ }
,它们是函数体的一种附件。 do
和end
之间我们有“Hello,World!”这是一个声明吗?我的意思是,它正在打印,但我们没有将其称为print "Hello, World!"
,所以发生了什么? get
是Sinatra中定义的方法,但是如果我添加了一个gem,那里已经定义了get
方法,那么我怎么知道它会调用哪个'get'方法?或者,它是指HTTP get
方法吗?如果这个问题听起来很基本,我很抱歉,但我希望在继续前进之前完成它。
答案 0 :(得分:1)
我可以建议在处理像sinatra
这样一个相当专业的库这样的大问题之前,先阅读一篇关于ruby的教程。
一个好的起点是Ruby Koans
关于你的问题。
get
是一种方法。 '/'
是它的论点。并且do ... end
表示像{}
那样的红宝石块。do ... end
是return "String"
相同。get
是sinatra
定义的方法get
。抽象地,它代表针对服务器的HTTP GET
请求。答案 1 :(得分:0)
对于“完美”的回应,我建议你看一下“Sinatra Up and Running”这本书 Alan Harris和Konstantin Haase。
http://shop.oreilly.com/product/0636920019664.do
第6页和第7页解释了“get'/'do”行实际上是一种方法调用。
您可以使用Google预览查看这2页。