Warning: file_get_contents(/data/phpspider/zhask/data//catemap/5/ruby/20.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Ruby中的数组容量限制_Ruby - Fatal编程技术网

Ruby中的数组容量限制

Ruby中的数组容量限制,ruby,Ruby,我不知道如何设置阵列容量,使我的阵列只能存储3个元素。例如,如果我尝试按第四个元素,它将返回错误。 有什么想法吗?您可以为数组创建一个包装器类!您还可以覆盖中的[]运算符,并检查索引是否有效: def [](i) # getter end def []=(i, v) # setter end 你可以为你的数组创建一个包装类!您还可以覆盖中的[]运算符,并检查索引是否有效: def [](i) # getter end def []=(i, v) # sett

我不知道如何设置阵列容量,使我的阵列只能存储3个元素。例如,如果我尝试按第四个元素,它将返回错误。
有什么想法吗?

您可以为数组创建一个包装器类!您还可以覆盖中的[]运算符,并检查索引是否有效:

def [](i)
    # getter
end

def []=(i, v)
    # setter
end

你可以为你的数组创建一个包装类!您还可以覆盖中的[]运算符,并检查索引是否有效:

def [](i)
    # getter
end

def []=(i, v)
    # setter
end
默认的数组类没有该功能。因此,您的选择是:

创建一个单独的类来存储这三个元素,并实现您自己的方法,如push和[]。 子类数组并重写方法以仅允许三个元素,例如:

class ThreeElements < Array
  def push(*stuff)
    raise 'Already has three elements!' unless length < 3
    super
  end
end
在我看来,1是更好的选择,因为默认数组接口有太多的方法需要重写。

默认数组类没有这种功能。因此,您的选择是:

创建一个单独的类来存储这三个元素,并实现您自己的方法,如push和[]。 子类数组并重写方法以仅允许三个元素,例如:

class ThreeElements < Array
  def push(*stuff)
    raise 'Already has three elements!' unless length < 3
    super
  end
end

在我看来,1是更好的选择,因为默认数组接口有太多的方法需要重写。

Ruby数组不是这样工作的。最好使用一些包装类。不知羞耻的插件,我写了一个应该满足您需求的gem:这不是Ruby阵列的工作方式。最好使用一些包装类。无耻的插头,我写了一个宝石,应该涵盖你的需要: