如何在Ruby中初始化类数组
我想在Ruby中创建一个空数组作为类实例变量。然而,我目前的方法似乎不起作用 这是我的密码:如何在Ruby中初始化类数组,ruby,Ruby,我想在Ruby中创建一个空数组作为类实例变量。然而,我目前的方法似乎不起作用 这是我的密码: class Something @something = [] def dosomething s = 5 @something << s end end 分类 @某物=[] def剂量测定法 s=5 @一些您需要使用initialize作为构造函数,如下代码所示,是否有任何理由不使用initialize/constructor。请
class Something
@something = []
def dosomething
s = 5
@something << s
end
end
分类
@某物=[]
def剂量测定法
s=5
@一些您需要使用initialize作为构造函数,如下代码所示,是否有任何理由不使用initialize/constructor。请修复类定义class Something
到class Something
中的打字错误,在课堂上不要使用驼峰大小写或首字母大写
class Something
def initialize
@something = Array.new
end
def dosomething
s = 5
@something << s
end
end
分类
def初始化
@something=Array.new
结束
def剂量测定法
s=5
@一些您需要使用initialize作为构造函数,如下代码所示,是否有任何理由不使用initialize/constructor。请修复类定义class Something
到class Something
中的打字错误,在课堂上不要使用驼峰大小写或首字母大写
class Something
def initialize
@something = Array.new
end
def dosomething
s = 5
@something << s
end
end
分类
def初始化
@something=Array.new
结束
def剂量测定法
s=5
@一开始你有一个打字错误。将Class
更改为Class
。接下来,我建议使用initialize方法。创建新对象时,这是初始化实例变量的最佳位置
class Something
@@my_class_variable = [1]
def initialize
@something = []
end
def dosomething
s = 5
@something << s
end
def self.get_my_class_variable
@@my_class_variable
end
end
现在可以从类中创建实例。使用Something.new
将调用initialize方法并定义实例变量
something = Something.new
something.dosomething
# => [5]
稍后,如果您熟悉这一点,您可以使用attr\u reader
、attr\u writer
和attr\u accessor
为实例对象或catr\u reader
、catr\u writer
和catr\u accessor
为类对象定义getter和setter方法。例如:
class Something
attr_reader :my_something
def initialize
@my_something = []
end
def dosomething
s = 5
@my_something << s
end
end
something = Something.new
something.my_something
# => []
something.dosomething
# => [5]
something.my_something
# => [5]
分类
读者:我的什么
def初始化
@我的某物=[]
结束
def剂量测定法
s=5
@我的东西
某物,某物
# => [5]
我的东西
# => [5]
一开始你有一个打字错误。将Class
更改为Class
。接下来,我建议使用initialize方法。创建新对象时,这是初始化实例变量的最佳位置
class Something
@@my_class_variable = [1]
def initialize
@something = []
end
def dosomething
s = 5
@something << s
end
def self.get_my_class_variable
@@my_class_variable
end
end
现在可以从类中创建实例。使用Something.new
将调用initialize方法并定义实例变量
something = Something.new
something.dosomething
# => [5]
稍后,如果您熟悉这一点,您可以使用attr\u reader
、attr\u writer
和attr\u accessor
为实例对象或catr\u reader
、catr\u writer
和catr\u accessor
为类对象定义getter和setter方法。例如:
class Something
attr_reader :my_something
def initialize
@my_something = []
end
def dosomething
s = 5
@my_something << s
end
end
something = Something.new
something.my_something
# => []
something.dosomething
# => [5]
something.my_something
# => [5]
分类
读者:我的什么
def初始化
@我的某物=[]
结束
def剂量测定法
s=5
@我的东西
某物,某物
# => [5]
我的东西
# => [5]
尝试访问实例方法中的@something
时遇到的问题是,在实例方法的范围内,@
变量指实例变量,而@something
是类实例变量
@
变量是实例的实例变量,该实例在创建时为self
。当@something
被创建时,self
是类something
,而不是某事物的实例,在实例方法中就是这样
那么,如何在实例方法中访问类实例变量呢?与常规实例变量一样,这必须通过方法完成,如attr\u accessor
。一种方法是使用class在您的实例方法中尝试访问@something
的问题是,在实例方法的范围内,@
变量指实例变量,而您的@something
是类实例变量
@
变量是实例的实例变量,该实例在创建时为self
。当@something
被创建时,self
是类something
,而不是某事物的实例,在实例方法中就是这样
那么,如何在实例方法中访问类实例变量呢?与常规实例变量一样,这必须通过方法完成,如attr\u accessor
。一种方法是使用class您已经正确创建了一个class实例变量@something
,并将其初始化为空数组。实例有两种方法获取或更改该变量的值。一种是使用方法和(在类上调用):
在您的dosomething
方法中,您可以编写:
self.class.something << s
self.class.something您已经正确创建了类实例变量@something
,并将其初始化为空数组。实例有两种方法获取或更改该变量的值。一种是使用方法和(在类上调用):
在您的dosomething
方法中,您可以编写:
self.class.something << s
self.class.something通常[]
比Array.new
更可取,除非你做的事情涉及到向new
传递参数,比如Array.new(10)
。是的,在上述情况下,发送参数是没有用的:)所以我更喜欢Array.new..这是你个人的偏好,但是大多数Ruby风格的指南都反对它,认为它是不必要的杂乱。类变量不是全局变量。全局变量可用于Ruby对象空间中的任何对象。@@@变量仅对定义它们的类及其子类可用。是的,谢谢Keith Bennet Updated通常[]
比数组更可取。new
除非您正在做一些涉及将参数传递给new
的事情,如数组。new(10)
。是的,
self.class.something << s