理解Ruby(Sinatra)-非常基础

理解Ruby(Sinatra)-非常基础,ruby,rubygems,sinatra,Ruby,Rubygems,Sinatra,我看着Sinatra,试图理解语法: require 'sinatra' get '/' do "Hello, World!" end 我知道它是这样做的: 这是一条“路线”。在这里,我们告诉Sinatra,如果使用正常的GET HTTP方法请求主URL或根URL“/”以显示“Hello,World!” 但是Ruby语言正在发生什么呢 这个语法是什么意思:get'/'?get是一个方法,而“/”是它的一个参数吗?如果它是method,那么在Ruby中,我可以将一个方法调用为methodn

我看着Sinatra,试图理解语法:

require 'sinatra'

get '/' do
  "Hello, World!"
end
我知道它是这样做的:

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

但是Ruby语言正在发生什么呢

  • 这个语法是什么意思:
    get'/'
    get
    是一个方法,而“
    /
    ”是它的一个参数吗?如果它是method,那么在Ruby中,我可以将一个方法调用为
    methodname(parameter){}
    。那里有什么用
  • 我通常把
    do
    end
    理解为
    {}
    ,它们是功能体的外壳
  • do
    end
    之间,我们有“你好,世界!”那么这是一种说法吗?我的意思是,它正在被打印出来,但我们并没有把它称为打印“你好,世界!”,所以发生了什么
  • 似乎
    get
    是Sinatra中定义的一个方法,但是如果我添加一个gem,其中已经定义了
    get
    方法,那么我如何知道它将调用哪个“get”方法呢?或者,它是指HTTP
    get
    方法吗

  • 如果这个问题听起来很基本,我很抱歉,但我想在继续之前先把它看完。

    我建议在解决像
    sinatra
    这样的更大的问题之前,先学习一下ruby教程,这是一个相当专业的库

    一个好的开始是从

    至于你的问题

  • get
    是一种方法
    “/”
    是它的参数。和
    做。。。end
    表示ruby中的块,就像
    {}
    一样
  • 是的,
    就是这么做的。。。结束
  • Ruby中的块返回默认情况下计算的最后一个值,因此在这种情况下,使用字符串与使用
    返回“string”
    相同
  • 如果您遇到名称空间冲突,Ruby会抱怨。在这种情况下,
    get
    sinatra
    定义的方法
    get
    。抽象地说,它代表针对服务器的
    httpget
    请求

  • 我建议在解决像
    sinatra
    这样的更大问题之前,先学习一下ruby教程,这是一个相当专业的库

    一个好的开始是从

    至于你的问题

  • get
    是一种方法
    “/”
    是它的参数。和
    做。。。end
    表示ruby中的块,就像
    {}
    一样
  • 是的,
    就是这么做的。。。结束
  • Ruby中的块返回默认情况下计算的最后一个值,因此在这种情况下,使用字符串与使用
    返回“string”
    相同
  • 如果您遇到名称空间冲突,Ruby会抱怨。在这种情况下,
    get
    sinatra
    定义的方法
    get
    。抽象地说,它代表针对服务器的
    httpget
    请求
  • 为了得到“完美”的回答,我建议你看看作者的《Sinatra启动并运行》一书 艾伦·哈里斯和康斯坦丁·哈斯

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

    您可以通过谷歌预览查看这2页。

    要获得“完美”的回复,我建议您看看作者的《Sinatra启动并运行》一书 艾伦·哈里斯和康斯坦丁·哈斯

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


    您可以使用谷歌预览查看这两个页面。

    谢谢。我已经阅读了教程,但是还没有从哪里得到如此精细的语法解释。我相信,经过一段时间的经验,我会很容易抓住他们。通常在大多数语言中,方法调用类似于methodname(paramaters)。但是这里是methodname(参数),然后是{}。这让我迷路了。它调用get方法,在该方法中传递参数“/”并附加一个返回“helloworld”的块。那么,在定义了get方法的地方,如何使用这个块呢?方法调用只是方法MyNeX和参数,不是吗?@ jvk,使用“{”和“}”来定义某些语言的主体是常见的,而您还没有用C、C++或Perl编写,到三个名称,您可以看到括号。我们调用'{'和'}'或'do'/'end'块中的内容。@JVK a块是方法调用的参数之一(总是最后一个)。当方法
    yield
    s时会调用它。谢谢大家。我希望我能早点看到这个解释,这正好解释了我要找的。谢谢。我已经阅读了教程,但是还没有从哪里得到如此精细的语法解释。我相信,经过一段时间的经验,我会很容易抓住他们。通常在大多数语言中,方法调用类似于methodname(paramaters)。但是这里是methodname(参数),然后是{}。这让我迷路了。它调用get方法,在该方法中传递参数“/”并附加一个返回“helloworld”的块。那么,在定义了get方法的地方,如何使用这个块呢?方法调用只是方法MyNeX和参数,不是吗?@ jvk,使用“{”和“}”来定义某些语言的主体是常见的,而您还没有用C、C++或Perl编写,到三个名称,您可以看到括号。我们调用'{'和'}'或'do'/'end'块中的内容。@JVK a块是方法调用的参数之一(总是最后一个)。当方法
    yield
    s时会调用它。谢谢大家。我希望我能早点看到这个解释,这正好解释了我在寻找什么。