在“if”语句中从数组中选择单个元素

时间:2016-10-11 18:29:52

标签: arrays ruby if-statement include

创建一个接收用户输入的方法 - 如果所述输入包含来自预定数组的任何单词,则打印出“成功”一词。否则,如果输入不包含该数组中的单词,则会输出单词“failure”。

我的理想是创建一个场景,我可以使用尽可能多的元素填充数组,并且该方法将在决定如何对用户输入作出反应时始终引用该数组。

然而,当我运行它时,我收到一条错误消息,指出“没有将Array隐式转换为String。”

我的代码如下。感谢任何和所有的帮助!感谢。

            def hello
            word_bank = ["hello", "hi", "howdy"]
            print "Say a word: "
            greeting = $stdin.gets.chomp.to_s

            if greeting.include?(word_bank[0..2])
               puts "success!"
              else
                puts "failure."
              end

            end

            hello

2 个答案:

答案 0 :(得分:3)

include?是数组的方法。

word_bank = ["hello", "hi", "howdy"]
print "Say a word: "
greeting = gets.chomp

if word_bank.include?(greeting)
  puts "success!"
else
  puts "failure."
end

puts [1,2,3].include?(1) # true
puts [1,2,3].include?(4) # false

如果word_bank很大,出于性能原因,我们应该使用集合而不是数组。

require 'set'

word_bank = Set.new(["hello", "hi", "howdy"])

答案 1 :(得分:0)

这就是我解决这个问题的方法,但我还没有对它进行过测试,但它应该有效。

def hello
  word_bank = ['hello', 'hi', 'howdy']
  print 'Say a word: '
  greeting = $stdin.gets.chomp.to_s

    word_bank.each do |w|

    w == greeting ? (puts 'success') : (puts 'failure')

  end   
end