Ruby数组 - 无法访问值

时间:2009-04-11 00:22:13

标签: ruby arrays

所以我正在为我的班级做一个小而简单的项目,由于某种原因,我无法使用变量访问值。

这是我的班级:(我遇到了getAnswer方法的问题,特别是answerArray数组)

#Create random fact array
class RandomFact
    def initialize()
        @randomNum = rand(5)
    end

    def getQuestion
        randomNum = @randomNum
        questionArray = Array.new
        questionArray[0] = "Do you liek mudkipz?"
        questionArray[1] = "Question2"
        questionArray[2] = "Three"
        questionArray[3] = "Reddit"
        questionArray[4] = "4chan"

        puts questionArray[randomNum]
        return randomNum
    end

    def getAnswer(randomNum,answer)
        answerArray = Array.new
        answerArray[0] = "one"
        answerArray[1] = "two"
        answerArray[2] = "three"
        answerArray[3] = "four"
        answerArray[4] = "five"

        return answerArray[randomNum]
    end

end

这是我上课的课程:

    randomNum = cgi['randomNum']
    answer = cgi['answer']
    puts newQuestion.getAnswer(randomNum,answer)

现在的问题是randomNum保存了以前表单中的值。如果我打印出randomNum就在我从表格中拉出值的地方我得到它。
如果我打印出方法中的randomNum getAnswer我得到它。
如果我打印出answerArray [0]我得到一个值。
如果我打印出answerArray [randomNum]我什么都没得到。



它几乎是上面的getQuestion方法的精确副本,并且可以使用。有什么输入吗?

5 个答案:

答案 0 :(得分:1)

随机数可能是来自CGI的字符串。使用randomNum.to_i将其转换为整数,您将被设置。

答案 1 :(得分:0)

一定是你的输入。当我在irb中尝试它时,它对我有用。

>> new_q = RandomFact.new
=> #<RandomFact:0x41028e74 @randomNum=2>
>> new_q.getQuestion
Three
=> 2
>> new_q.getAnswer(2, "")
=> "three"

答案 2 :(得分:0)

我不确定你在这里尝试做什么,但如果你真的只是想做你的例子所展示的,那么你就不需要创建类和函数了。一系列问题和答案都会很有效。

QA = [
  ["What is the capital of Estonia?","Tallinn"],
  ["How many times to 6 go into 18?","3"],
  ["What have I got in my pocket?","The Ring"]
]

qnum = cgi["qnum"].to_i
question = QA[qnum].first
answer = QA[qnum].last

答案 3 :(得分:0)

你是否在某处初始化newQuestion?在你给出的例子中,它将是零。

一些不相关的问题花絮:你不需要return语句。 Ruby总是返回最后一个值。只需将价值放在那里。在Ruby中,标准做法是将变量写为new_question,而不是newQuestion。

答案 4 :(得分:0)

你的代码中有很多东西看起来很不规则。

无论您如何切片,在两个单独的阵列中描述问题和答案都是麻烦。更好的方法是在一个简单,一致的数组中定义它们,然后使用内置的Array#rand方法选择其中一个元素,它将随机选择其中一个。

例如


  class RandomFact
    QUESTIONS = [
      [ 'How many nuts can a squirrel eat?', '2' ],
      [ 'What is my favorite color?', 'blue' ]
    ]

    def self.rand
      QUESTIONS.rand
    end
  end

  (question, answer) = RandomFact.rand

  puts "Question: #{question}"
  puts "Answer: #{answer}"