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

class Something
    @something = []
    def dosomething
        s = 5
        @something << s
    end
end

当我调用这个函数时,它给了我一个未定义的方法回溯。
但是,如果我对类变量执行类似的操作,即:
class Something
    @@something = []
    def dosomething
        s = 5
        @@something << s
    end
end

这很管用。
我知道我可以使用initialize方法为@something实际创建一个空列表,但是有没有其他方法可以在不使用initialize方法的情况下这样做呢为什么这对类变量有效?
编辑:固定排版

最佳答案

您需要按照下面的代码使用initialize作为构造函数,是否有理由不使用initialize/constructor并且请修正类定义中的一个拼写错误Class Somethingclass Something在类中没有驼峰大小写或首字母大写

class Something
      def initialize
        @something = Array.new
      end
      def dosomething
        s = 5
        @something << s
      end
    end

类变量@@可用于整个类范围因此它们在代码中工作,如果您想使用实例变量@,您需要如上所述初始化它。实例变量与类的实例/对象共享
有关详细信息,请访问链接Ruby initialize method

07-26 09:38
查看更多