我正在尝试用红宝石制作一个小刽子手游戏。我正在尝试使用以下代码验证猜测输入:
puts "Enter a word: "
answer = gets.chomp
tries = 5
answer_array = answer.chars
until tries == 0
hits = ""
puts "enter your guess: "
guess = gets[0]
if guess.class != "String"
puts "enter a letter!!"
else
puts "nice!!!"
end
tries -= 1
end
出于某种原因 - 无论我为guess
得到什么输入 - 程序都会抛出“输入一封信!”。我定义if语句的方式是否有问题。我只是想区分String和Integer。
答案 0 :(得分:3)
/specials/:id
总是返回一个String,所以我认为你不想验证它的类。如果要检查输入是否为单个字母,可以先检查输入的长度是否为1:
gets
然后,您可以使用正则表达式检查它是否真的是一个字母:
guess.length == 1
这基本上找到(guess =~ /[A-Za-z]/) == 0
中第一个字母的位置;因为在0位只应该有一个字母,如果猜是一个字母,这个条件就是真的。
结合起来:
guess
答案 1 :(得分:1)
guess.name
返回String
的常量。您需要注意String
与"String"
不同。当您将其用单引号括起来时,它将变为字符串,但不是常量。
所以,将你的if子句改为
if guess.class != String
puts "enter a letter!!"
else
puts "nice!!!"
end
或使用.is_a?
方法。
if guess.is_a?(String)
puts "enter a letter!!"
else
puts "nice!!!"
end