如何在 Ruby 中初始化类数组

adr*_*anp 1 ruby

我想在 Ruby 中创建一个空数组作为类实例变量。但是,我目前的方法似乎不起作用。

这是我的代码:

class Something 
    @something = []
    def dosomething
        s = 5
        @something << s
    end
end
Run Code Online (Sandbox Code Playgroud)

当我调用该函数时,它给了我一个未定义的方法回溯。但是,如果我对类变量做类似的事情,即:

class Something
    @@something = []
    def dosomething
        s = 5
        @@something << s
    end
end
Run Code Online (Sandbox Code Playgroud)

这完美地工作。

我知道我可以使用 initialize 方法为@something 创建一个空列表,但是有没有另一种方法可以在不使用 initialize 方法的情况下做到这一点?为什么这适用于类变量?

编辑:修正错别字

roh*_*rka 5

您需要使用 initialize 作为构造函数,如下代码所示,是否有任何理由不使用 initialize/constructor。并且请在课堂定义中将拼写错误修复Class Somethingclass Something没有驼峰式大小写或首字母大写

class Something 
      def initialize
        @something = Array.new
      end
      def dosomething
        s = 5
        @something << s
      end
    end
Run Code Online (Sandbox Code Playgroud)

class 变量@@可用于整个类范围。所以他们在代码中工作,如果你想使用实例变量@,你需要像上面一样初始化它。实例变量与类的实例/对象共享

有关更多详细信息,请访问链接Ruby 初始化方法