程序没有进入Ruby中的if-else块

时间:2012-02-22 21:40:54

标签: ruby

如果我将输入设为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 个答案:

答案 0 :(得分:2)

如果你打算像那样分配它,你需要使用chomp的破坏性版本。

$choice.chomp!

或者

$choice = $choice.chomp

答案 1 :(得分:2)

为了对此进行调试,我要做的是在puts $choice.inspect方法的开头添加switch,以准确查看变量中的内容。也就是说,我认为这里的问题是您拨打$choice.chomp而不是$choice.chomp!。前者将返回结果,后者将更改变量。

答案 2 :(得分:2)

当您将$choice.chomp更改为$choice.chomp!并删除//(将其更改为#)时,您就会有所作为。继续精炼它,它还不完美。

答案 3 :(得分:2)

使用$choice.chomp!。没有!不改变$选择。它返回一个新字符串。这是Ruby中的命名约定。