当item在数组中时,Ruby仅返回整数

时间:2014-08-19 02:44:19

标签: ruby arrays rpn

我正在创建一个反向抛光符号计算器作为预热测试'为了学校。我几乎把它钉了起来。我遇到的问题是当我自己运行时,我只看到返回的整数(这是期望的)。当我将其插入学校的RSpec检查程序时,它会将数据返回到数组中,因此标记为不正确。

要修复,我刚刚在最后构建了queue.each语句。我在几个不同的位置试过这个,但似乎并不重要。当evaluate返回一个答案时,是否有更大的概念从数组格式中提取我的答案?

class RPNCalculator

    def evaluate(string)
        holding = []
        queue = []
        string = string.split(" ").to_a      #jam string into an array - break on spaces

        string.each do |x|
            if x.match(/\d/)      #number checker. if true throw it in queue.
             queue << x.to_i       #convert to number from string
            elsif x.match(/\+/)      #math operator checker
                holding << queue[-2] + queue[-1]     #grab queue's last 2 & replace w/ result
                queue.pop(2)
                queue << holding[-1]
            elsif x.match(/\-/)
                holding << queue[-2] - queue[-1]
                queue.pop(2)
                queue << holding[-1]    
            elsif x.match(/\*/) 
                holding << queue[-2] * queue[-1]
                queue.pop(2)
                queue << holding[-1]    
            else
            end
        end
            return queue.each { |x| puts x.to_i}     # by [-1] in string, queue holds answer
    end
end

提前感谢您的时间,

1 个答案:

答案 0 :(得分:0)

您的方法(没有queue.each)返回string.each的结果。

如果您想返回queue,则需要执行

class RPNCalculator

    def evaluate(string)
        holding = []
        queue = []
        string = string.split(" ").to_a      #jam string into an array - break on spaces

        string.each do |x|
          #...
        end
        queue[0] # return the final result, stored in queue
    end
end