Программа не входит в блок if-else в Ruby - PullRequest
0 голосов
/ 23 февраля 2012

Если я даю ввод как 1 или 2, независимо от того, что программа идет по умолчанию.Попытка сравнения ввода с "1" и 1 оба.Тот же результат.Моя первая программа на Ruby, извините за наивность.

$choice

def getInfo
  puts "Info"
end 

def getMoreInfo
  puts "MoreInfo"
end


def switch
        if $choice == "1" #intentionally in ""
          getInfo
        elsif $choice == 2 #intentionally without ""
          getMoreInfo
        else
          puts "default"
        end
end


def callMainMenu
        puts "Choose the operation:"
        puts "[1] Get some Info"
        puts "[2] Get some moreInfo"
$choice=gets
$choice.chomp
end


callMainMenu
switch

Ответы [ 4 ]

2 голосов
/ 23 февраля 2012

Используйте $choice.chomp!. грызть без! не изменяет выбор $. Возвращает новую строку. Это соглашение об именах в Ruby.

2 голосов
/ 23 февраля 2012

Чтобы отладить это, я бы добавил puts $choice.inspect в начале вашего switch метода, чтобы точно увидеть, что находится в переменной.Тем не менее, я считаю, что проблема в том, что вы звоните $choice.chomp вместо $choice.chomp!.Первый вернет результат, а второй изменит переменную на месте.

2 голосов
/ 23 февраля 2012

Когда вы измените $choice.chomp на $choice.chomp! и избавитесь от // (измените их на #), у вас будет что-то работать.Продолжайте совершенствовать это, это еще не идеально.

2 голосов
/ 23 февраля 2012

Вам нужно использовать деструктивную версию chomp, если вы собираетесь назначить ее таким образом.

$choice.chomp!

Или

$choice = $choice.chomp
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...