Arrays RUBY:Rotate函数在单元测试中对数组不起作用

Arrays RUBY:Rotate函数在单元测试中对数组不起作用,arrays,ruby,function,sorting,Arrays,Ruby,Function,Sorting,我正在用Ruby测试代码输出。我想使用Ruby的rotate()函数使数组的最后一个元素成为第一个元素,原始的第一个元素成为数组中的第二个元素,等等 代码 require 'minitest/autorun' class TestMagicBus < MiniTest::Test def setup @bus = MagicBus.new(["Peter","James","Bardoe","Patrick

我正在用Ruby测试代码输出。我想使用Ruby的
rotate()
函数使数组的最后一个元素成为第一个元素,原始的第一个元素成为数组中的第二个元素,等等

代码

require 'minitest/autorun'
class TestMagicBus < MiniTest::Test

  def setup
    @bus = MagicBus.new(["Peter","James","Bardoe","Patrick","Jake","Samson","Dave"])
  end

  def test_move_the_last_passenger_to_the_front_of_the_bus
    assert_equal "Peter", @bus[0]
    @bus.rotate(-1)
    print(@bus)
    assert_equal "Dave", @bus[0]
  end
为什么
rotate()
什么都不做

MAGICBUS类的定义

class MagicBus < Array

  attr_writer :seating

end
class MagicBus
大多数Ruby内置方法都不会以
结尾
创建操作对象的副本,因此
@bus.rotate
使用旋转结果创建一个新的MagicBus对象,这就是
@bus=@bus.rotate-1
工作的原因

要在位修改对象,有一种方法:


你可以使用旋转!相反。你能展示一下
类MagicBus
的定义吗?@iBug Done。。。请注意,
@bus=@bus.rotate(-1)
可以“大多数Ruby内置方法都不会以
结尾”!
创建操作对象的副本”——这并不是真的。许多
数组
方法会使接收器发生变异,并且不会产生任何影响,例如
替换
清除
删除
保留

class MagicBus < Array

  attr_writer :seating

end
@bus.rotate! -1