Руби 'суб!' не заменяет текст операторов if/elsif [дубликаты]

Это сводило меня с ума гораздо дольше, чем следовало бы, я использую ПРОСТУЮ замену строки, и все же она не может заменить строку (в этом случае это «url») в соответствии с полученной информацией.

class Test
  myURL = 'www.google.com'
puts 'Where are you from?'
  location = gets
    if location == 'England'
     myURL['.com'] = '.co.uk'
    elsif location == 'France'
     myURL['.com'] = '.co.fr'
    end
puts myURL
end

Я схожу с ума?


person user1646130    schedule 24.03.2013    source источник
comment
Вы не используете sub! в своем коде.   -  person the Tin Man    schedule 25.03.2013


Ответы (2)


Изменить location = gets на location = gets.chomp

Что происходит с gets, так это то, что он подбирает все, что вы вводите в приглашение, которое включает клавишу Enter. Итак, если вы наберете «Англия», то:

location == "England\n" #=> true
location == "England"   #=> false

Метод String#chomp удалит завершающую строку в конце .

person Charles Caldwell    schedule 24.03.2013

Вам просто нужно сделать:

class Test
    myURL = 'www.google.com'
    puts 'Where are you from?'
    location = gets.chomp
    if location == 'England'
        myURL['.com'] = '.co.uk'
    elsif location == 'France'
        myURL['.com'] = '.co.fr'
    end
    puts myURL
end

Причина в том, что строка, возвращаемая gets, имеет разрыв строки в конце.

person Roney Michael    schedule 24.03.2013