无法将我的阵列调整为更小的尺寸

时间:2018-03-07 08:46:00

标签: arrays ruby

我定义了这个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

1 个答案:

答案 0 :(得分:1)

  

...我可以让它变成更大尺寸的阵列,但不是更小......

     

......我知道Ruby的数组本身就很大......

这是你问题的根源。迭代旧的,更大的数组,新的副本调整大小以容纳其所有元素。要解决此问题,从旧数组中取不超过size个元素。

由于这是你自己的挑战,我没有给你实际的代码。我希望这个提示应该足够了。