如何删除这些括号?
How do I remove these brackets?
我的代码给出了我想要的结果,但没有通过 rspec。这是我的代码:
def tokens(tokens)
tokenized = []
syms = %w(* / - +)
tokenized << tokens.split.map{|i| syms.include?(i) ? i.to_sym : i.to_i}
tokenized
end
这是规格:
# extra credit
it "tokenizes a string" do
calculator.tokens("1 2 3 * + 4 5 - /").should ==
[1, 2, 3, :*, :+, 4, 5, :-, :/]
end
现在,我的代码确实如此,因为它在一个数组中,return
[1, 2, 3, :*, :+, 4, 5, :-, :/]
但是当我 运行 respec 时它不会通过,因为它有一组额外的括号,如下所示:
失败:
1) RPNCalculator tokenizes a string
Failure/Error: [1, 2, 3, :*, :+, 4, 5, :-, :/]
expected: [1, 2, 3, :*, :+, 4, 5, :-, :/]
got: [[1, 2, 3, :*, :+, 4, 5, :-, :/]] (using ==)
我认为 rspec 正在使用类似 .inspect 的方法来添加方括号(我不知道 .should 是如何工作的)。对于所有要点和目的,我的代码似乎都是正确的。但它不会像现在这样过去。我应该怎么做才能让它通过?
map
returns 一个数组。所以当你这样做时
tokenized << tokens.split.map{|i| syms.include?(i) ? i.to_sym : i.to_i}
您正在将一个数组附加到 tokenized
数组。所以你的 rspec 应该是
it "tokenizes a string" do
calculator.tokens("1 2 3 * + 4 5 - /").should ==
[[1, 2, 3, :*, :+, 4, 5, :-, :/]]
end
要通过您的规范,您必须像这样更改 tokens
方法。
def tokens(tokens)
syms = %w(* / - +)
tokens.split.map{|i| syms.include?(i) ? i.to_sym : i.to_i}
end
我的代码给出了我想要的结果,但没有通过 rspec。这是我的代码:
def tokens(tokens)
tokenized = []
syms = %w(* / - +)
tokenized << tokens.split.map{|i| syms.include?(i) ? i.to_sym : i.to_i}
tokenized
end
这是规格:
# extra credit
it "tokenizes a string" do
calculator.tokens("1 2 3 * + 4 5 - /").should ==
[1, 2, 3, :*, :+, 4, 5, :-, :/]
end
现在,我的代码确实如此,因为它在一个数组中,return
[1, 2, 3, :*, :+, 4, 5, :-, :/]
但是当我 运行 respec 时它不会通过,因为它有一组额外的括号,如下所示: 失败:
1) RPNCalculator tokenizes a string
Failure/Error: [1, 2, 3, :*, :+, 4, 5, :-, :/]
expected: [1, 2, 3, :*, :+, 4, 5, :-, :/]
got: [[1, 2, 3, :*, :+, 4, 5, :-, :/]] (using ==)
我认为 rspec 正在使用类似 .inspect 的方法来添加方括号(我不知道 .should 是如何工作的)。对于所有要点和目的,我的代码似乎都是正确的。但它不会像现在这样过去。我应该怎么做才能让它通过?
map
returns 一个数组。所以当你这样做时
tokenized << tokens.split.map{|i| syms.include?(i) ? i.to_sym : i.to_i}
您正在将一个数组附加到 tokenized
数组。所以你的 rspec 应该是
it "tokenizes a string" do
calculator.tokens("1 2 3 * + 4 5 - /").should ==
[[1, 2, 3, :*, :+, 4, 5, :-, :/]]
end
要通过您的规范,您必须像这样更改 tokens
方法。
def tokens(tokens)
syms = %w(* / - +)
tokens.split.map{|i| syms.include?(i) ? i.to_sym : i.to_i}
end