我定义了这个StackOfStringsArray
类,它包含一个数组实例@stringArray
和一个数组索引变量,如下所示,我在其中定义了一个resize
方法,以使@stringArray可以调整大小。我知道Ruby的数组本身很大,但我想实现我的。
另外,当我在irb中进行实验时,我可以成功完成(新的大小数组并将其分配给StackOfStringsArray
对象的@stringArray,我可以看到@stringArray的大小与新数组),但是通过使用这个resize
方法,我可以让它变成更大的数组,但不是更小的数组,即使我确定它确实进入了这个resize
方法。
一些Ruby忍者可以帮忙吗?非常感谢。
class StackOfStringsArray
attr_accessor :stringArray, :index
def initialize(size)
@stringArray = Array.new(size)
@index = 0
end
def resize(size)
copy = Array.new(size)
@stringArray.each_with_index do |element, index|
copy[index] = element
end
@stringArray = copy
end
end
答案 0 :(得分:1)
...我可以让它变成更大尺寸的阵列,但不是更小......
......我知道Ruby的数组本身就很大......
这是你问题的根源。迭代旧的,更大的数组,新的副本调整大小以容纳其所有元素。要解决此问题,从旧数组中取不超过size
个元素。
由于这是你自己的挑战,我没有给你实际的代码。我希望这个提示应该足够了。