【问题标题】:Can't resize my array to a smaller size无法将我的数组调整为更小的尺寸
【发布时间】:2018-03-07 08:46:00
【问题描述】:

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

【问题讨论】:

    标签: arrays ruby


    【解决方案1】:

    ...我可以让它变成更大的数组,但不能变小...

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

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

    既然这是你强加给自己的挑战,我不会给你实际的代码。我希望这个提示应该足够了。

    【讨论】:

    • 非常感谢您提供快速周到的回答。我刚刚解决了。
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2020-06-25
    • 1970-01-01
    • 1970-01-01
    • 2015-06-25
    • 2021-05-07
    相关资源
    最近更新 更多