2013-04-22 63 views
0

我是Ruby的新手。Ruby do-block和RestClient

我注意到,如果我这样做(已经被定义假设“请求”):

RestClient::Request.execute(request) do |response| 
    print response 
end 

然后响应是空的。但如果我这样做

response = RestClient::Request.execute(request) 
print response 

然后回应有一些东西。

为什么第二个工作,第一个不工作的原因是什么?

回答

5

documentationRestClient::Request.execute不显示它需要一个块:

 
def self.execute(args) 
     new(args).execute 
end 

它只返回通过RESTClient实现的一个匿名实例调用execute返回的值。

+0

如果要挡住一块,会有什么不得不说的? – bhh1988 2013-04-22 18:49:10

+0

它会在执行期间在某个地方产生控制。既然它不,即使你添加一个块,代码也不会试图调用它。 – 2013-04-22 19:36:04