我的代码使用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)
我该如何解决这个问题?
答案 0 :(得分:7)
当有一个块写为{}
时,Ruby的语法不允许省略参数周围的括号。你需要这样做:
before(:each){@unsorted=[1,5,6,7,4,5,8,4,2,5,2]}
答案 1 :(得分:2)
一个答案是使用before
代替before :each
,即
before {@unsorted=[1,5,6,7,4,5,8,4,2,5,2]}
答案 2 :(得分:2)
这不是Ruby的惯用语,但它是允许的。
before :each do puts "something here" end
我认为before
的默认参数是:each
,所以您可以将其删除。
与{}
块相比,do..end
块的强度优先级要求我们使用括号,以便块不与参数而不是方法相关联。如果参数是一个用块做某事的方法,那么它就会被允许,也许会让人感到困惑。
当然,您的错误特别来自解析器,因为您正在尝试将块(意外的{
)应用于符号。