2

我的代码使用了一个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)

我怎样才能解决这个问题?

4

3 回答 3

7

当有一个块写为{}时,Ruby 的语法不允许省略参数周围的括号。你需要做:

before(:each){@unsorted=[1,5,6,7,4,5,8,4,2,5,2]}
于 2013-10-20T14:06:56.903 回答
2

一个答案是使用before而不是before :eachie

before {@unsorted=[1,5,6,7,4,5,8,4,2,5,2]}
于 2013-10-20T14:02:45.387 回答
2

这不是 Ruby 的惯用语,但它是允许的。

before :each do puts "something here" end

before我相信的默认参数是:each这样你就可以把它排除在外。

{}与块相比,块的更强优先级do..end将要求我们使用括号,以便块不与参数相关联,而不是与方法相关联。如果参数是一个对块做某事的方法,那么它将被允许,并且可能会令人困惑。

当然,您的错误专门来自解析器,因为您正在尝试将块(意外{)应用于符号。

于 2013-10-20T14:51:07.747 回答