我的代码使用before :each
块:
before :each do
@unsorted=[1,5,6,7,4,5,8,4,2,5,2]
end
it "contains an unsorted an array" do
test_array = BubbleSort.new(@unsorted)
expect(test_array.contents).to eq [1,5,6,7,4,5,8,4,2,5,2]
end
我希望before :each
代码是内联的,但使用
before :each {@unsorted=[1,5,6,7,4,5,8,4,2,5,2]}
给:
syntax error, unexpected '{', expecting keyword_
end (SyntaxError)
我该如何解决这个问题?
当有一个块写成{}
时,Ruby的语法不允许省略参数周围的括号。您需要做:
before(:each){@unsorted=[1,5,6,7,4,5,8,4,2,5,2]}
一个答案是使用 before
而不是before :each
before {@unsorted=[1,5,6,7,4,5,8,4,2,5,2]}
这不是 Ruby 的惯用语,但这是允许的。
before :each do puts "something here" end
我相信before
的默认参数是:each
,所以你可以省略它。
与do..end
块相比,{}
块的优先级更强,这将要求我们使用括号,以便块不与参数而不是方法相关联。 如果参数是一个用块做某事的方法,那么它将被允许,并且可能会令人困惑。
当然,您的错误主要是由于解析器看到您正在尝试将块(意外{
)应用于符号。