我正在使用rspec示例测试第一个ruby…
我需要通过这次考试。

it "tokenizes a string" do
    calculator.tokens("1 2 3 * + 4 5 - /").should ==
      [1, 2, 3, :*, :+, 4, 5, :-, :/]
  end

这是我的密码
def tokens(str)
    data = str.split(' ')
    outcomes = []
    data.collect do |x|
      if x.to_i != 0
        outcomes.push(x.to_i)
      elsif x.to_i == 0
        temp = x.gsub('"', '')
        outcomes.push(":#{temp}")
      end
    end
    outcomes
  end

但是,我得到了这些反馈。不知道如何去掉引号。
Failure/Error: [1, 2, 3, :*, :+, 4, 5, :-, :/]
       expected: [1, 2, 3, :*, :+, 4, 5, :-, :/]
            got: [1, 2, 3, ":*", ":+", 4, 5, ":-", ":/"] (using ==)

最佳答案

试试这个:

outcomes.push(:"#{temp}")

":#{temp}"是字符串,但这是带字符串插值的:"#{temp}"符号。
=>:"+".class
#> Symbol
=> ":+".class
#> String

09-16 01:14