这是我设法实现这一目标的一种方式。
class Test
class << self
attr_accessor :stuff
def thing msg
@stuff ||= ""
@stuff += msg
end
end
def initialize
@stuff = self.class.stuff
puts @stuff
end
end
# Is there a better way of accomplishing this?
class AThing < Test
thing "hello"
thing "world"
end
AThing.new
# Prints "helloworld"
AThing中的界面是我想要的最终结果。我非常讨厌(我觉得必须有更好的方法)是@stuff = self.class.stuff。
有没有更好的方法来使用本征类为自身的所有实例设置默认数据集,同时保持“漂亮”的界面?
我想用这样的代码实现的是拥有一个类方法,比如说add_something可以为存储在类变量中的数组添加一些东西。
当实例化类时,它将在其'initialize方法中使用此数组来设置该实例的状态。
答案 0 :(得分:1)
class Test
@@stuff = ""
class << self
def thing msg
@@stuff.concat(msg)
end
end
def initialize
puts @@stuff
end
end
class AThing < Test
thing "hello"
thing "world"
end
AThing.new
# Prints "helloworld"