如果在ruby中声明,则确定输入类型

时间:2016-07-27 22:01:58

标签: ruby string class if-statement integer

我正在尝试用红宝石制作一个小刽子手游戏。我正在尝试使用以下代码验证猜测输入:

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。

2 个答案:

答案 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