Ruby中的数组容量限制

Ale*_*lek 1 ruby

我不知道如何设置数组容量,所以我的数组只能存储3个元素.例如,如果我尝试推送第4个元素,则返回错误.有任何想法吗?

小智 6

默认Array类没有该功能.所以,你的选择是:

  1. 创建一个单独的类来存储这三个元素,并实现自己的方法,如push[].
  2. 子类Array并覆盖方法以仅允许三个元素,例如:

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

在我看来,#1是更好的选择,因为默认的Array接口有太多的方法来打扰覆盖.