Ruby 如果你班上的其他同学都在使用getter,那就到你需要的地方了。太棒了。我爱红宝石;好像他们什么都想到了。非常感谢你,这真是太有帮助了!我甚至不知道有一个内置的方法instance\u variable\u set。我绝对应该用这个。我喜欢你列出的最后一种
Ruby 如果你班上的其他同学都在使用getter,那就到你需要的地方了。太棒了。我爱红宝石;好像他们什么都想到了。非常感谢你,这真是太有帮助了!我甚至不知道有一个内置的方法instance\u variable\u set。我绝对应该用这个。我喜欢你列出的最后一种,ruby,class,Ruby,Class,如果你班上的其他同学都在使用getter,那就到你需要的地方了。太棒了。我爱红宝石;好像他们什么都想到了。非常感谢你,这真是太有帮助了!我甚至不知道有一个内置的方法instance\u variable\u set。我绝对应该用这个。我喜欢你列出的最后一种方法;我从来没有想过要直接破坏attr\u访问器的“幕后”活动(这就是正在发生的事情,对吧?)。是的,基本上attr\u访问器为每个参数定义两个方法(getter和setter),将实例变量包装在方法调用中。通常,使用这些变量而不是直接引用实例
如果你班上的其他同学都在使用getter,那就到你需要的地方了。太棒了。我爱红宝石;好像他们什么都想到了。非常感谢你,这真是太有帮助了!我甚至不知道有一个内置的方法
instance\u variable\u set
。我绝对应该用这个。我喜欢你列出的最后一种方法;我从来没有想过要直接破坏attr\u访问器的“幕后”活动(这就是正在发生的事情,对吧?)。是的,基本上attr\u访问器
为每个参数定义两个方法(getter和setter),将实例变量包装在方法调用中。通常,使用这些变量而不是直接引用实例变量是一种很好的做法(除了在initialize
中),这种情况就是原因之一——它通过简单地重写方法使返回值易于更改,并且只要类的其余部分使用getter,这就是您需要做的。我爱红宝石;好像他们什么都想到了。
class Hedgehogs
attr_accessor :name, :age, :color, :weight, :fur_quality, :disposition, :sexual_aggression, :has_syphilis # ... etc etc.
class Hedgehogs
attr_accessor :name, :age, :color, :weight, :fur_quality, :disposition, :sexual_aggression, :has_syphilis
def initialize(opts)
@name = opts[:name] || 'Default Name'
@age = opts[:age] || 'Default Age'
... etc ..
end
def self.madagascar_hedgehog
self.new(:name => 'Madagascar', :age => 50)
end
end
class Hedgehog
def initialize(attributes = {})
attributes.each do |key, value|
instance_variable_set("@#{key}", value)
end
set_constant_attributes
end
def set_constant_attributes
end
end
class MadagascarHedgehog
def set_constant_attributes
@default1 = 'default value 1'
end
end
class MadagascarHedgehog
def initialize(attributes = {})
super(attributes)
@default1 = 'default value 1'
end
end
class MadagascarHedgehog
def color
'brown'
end
end
class Hedgehog
attr_accessor :name, :age, :color, :weight, :fur_quality, :disposition, :sexual_aggression, :has_syphilis
end
class MadagascarHedgehog < Hedgehog
def initialize(args)
args[:color] = 'brown'
args[:sexual_aggression] = 'aggressive'
args[:has_syphilis] = 'immune'
super(args)
end
undef_method :color=
undef_method :sexual_aggression=
undef_method :has_syphilis=
end