2013-04-22 3 views
0

Я новичок в Ruby.Ruby do-block и RestClient

Я заметил, что если я (предположим, что «запрос» был определен):

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

Тогда ответ пуст. Но если я сделаю

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

Тогда ответ имеет что-то.

В чем причина, почему вторая работает, а первая нет?

ответ

5

documentation для RestClient::Request.execute не показывает, что берет блок:

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

Это только возвращает значение, возвращаемое вызовом execute на анонимный экземпляр RestClient.

+0

Что бы он сказал, если бы взять блок? – bhh1988

+0

Он будет «выдавать» управление блоку где-то во время выполнения. Так как это не так, даже если вы добавите блок, код не будет пытаться вызвать его. –

Смежные вопросы