在 ruby 中,如何声明数组中与其成员之一相关的位置?我正在尝试为 Fibonnaci 序列编写测试,其条款限制为四百万,并且我的规范如下:
it 'creates an array of numbers with each member evaluating as the sum of the two previous members' do
expect(fibonacci.each {|member| member == two_positions_back_from_member + one_position_back_from_member}).to eq(true)
end
我知道您可以使用 array[4] 来确定数组的位置。有谁知道是否有办法对其成员执行此操作?
最佳答案
您当然可以找到数组中的成员,它为您提供了数组中的索引,您可以从中减去以获得相对位置。在你的例子中:
i = fibonacci.index(member); fibonacci[i-2] + fibonacci[i-1]
也就是说,您无法像这样测试斐波那契数列,因为它是一个数列。因为它是无限的,所以需要永远。当然,除非您的 fibonacci
只是一个摘录。
此外,each
将返回 fibonacci
,因此 expect
这个 .to be(true)
可能是不是你想要的。尝试使用 map
而不是 each
然后 expect
.to eq(fibonacci)
。
关于ruby - 如何从数组成员的角度在 ruby 中表达数组中的关系?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/25327652/