Как пропустить итерацию, если условие IF становится истинным, и перейти к первой строке do .. end? - PullRequest
3 голосов
/ 21 февраля 2012

Я написал следующий код:

require 'net/http'
require 'uri'
require 'IPAddr'
require 'timeout'
require 'Resolv'
require 'open-uri'

#puts "Origin IP:\n\n"
#originip = gets()
(IPAddr.new("209.85.175.120")..IPAddr.new("209.85.175.150")).each do |address|
  uri = URI("http://#{address.to_s}")
  puts "#{uri}"
  http = Net::HTTP.new(uri.host, uri.port)
  puts "#{http}"
  Net::HTTP.start(uri.host, uri.port) do |http|
    request = Net::HTTP::Get.new uri.request_uri
    response = http.request request
    if response.code == "301" || response.code == "400" then

    end
    #request.initialize_http_header({"Origin" => "#{originip}"})
  end

Можно ли перейти на линию uri = URI("http://#{address.to_s}") в моем if состоянии

if response.code == "301" || response.code == "400" then
 # condition
end

в приведенном коде становится правдой? Как я могу перейти на следующий IP-адрес и пропустить текущий, если мое условие станет истинным?

Можно ли сделать что-то вроде метки и goto оператора в Ruby?

Ответы [ 2 ]

13 голосов
/ 21 февраля 2012
next if response.code == "301" || response.code == "400"
11 голосов
/ 21 февраля 2012

Вы хотите перейти к следующей итерации, верно?Просто используйте next.

...