从Ruby的while循环中的字符串中删除值

时间:2011-03-16 09:13:10

标签: ruby string while-loop

所以我正在学习另一种新语言的原因显然我的公司认为我们应该支持在阳光下可以想到的每一件事。下周我怀疑有关于FORTRAN,自动化和打卡的备忘录。但这既不是她也不是。我的问题是,我正在运行一个循环(在这种特殊情况下是一个while循环)并让它从用户收集一个字符串。宠物的名字。这个while循环继续重复,直到用户破坏它。但是第二次我开始接收来自Ruby的消息,告诉我这些值已经预先分配了。它不会导致问题,因为程序继续运行,但它看起来不太好。

有没有办法清除这些值,以便除了我想要的值之外它都返回nil,或者将所有东西放在函数中以便没有反流的可能性更好?

样品:

while moonies > 0
     print "Would you like to punch a kitty? y or n"
     y = gets()
     if y = 'y'
        print "Which kitty would you like to punch?"
        slap = gets()
        if slap == Tom
           print "You spent 50 dollars punching a kitten."
        ....
     else
        print "Is there something else you'd like to kick or did you want to spend no money today?"

依旧等等。

问题是,当它回到y时,就是消息开始出现的时候。谢谢你的帮助。

1 个答案:

答案 0 :(得分:0)

嗯......

if y = 'y'

是一项任务,而不是相等的比较。 y ='y'始终为真。应该是

if y == "y\n"  #note the newline, you got it from "gets"

if slap == Tom

这是一个比较,但汤姆是一个常数(它以资本开头)。我猜你在你的循环中的某个地方重新分配了一个值。 Ruby抱怨它。换行问题将再次出现在此处。 slap = gets.chomp将摆脱它。