2013-04-22 61 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