如果我将输入设为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
答案 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中的命名约定。