[英]Ruby class instance variables vs php properties
在 php 中,我可能有一个这样的类:
class Item
public $quality = 10
public function reduceQuality()
{
$this->quality -= 1;
}
}
$item = new Item;
$item->reduceQuality();
print $item->quality; // outputs 9
我将如何在 ruby 中实现类似的目标? 我有类似的东西:
class Item
attr_reader :quality
@quality = 10
def reduce_quality()
@quality -= 1
end
end
item = Item.new
item.reduce_quality # `reduce_quality': undefined method `-' for nil:NilClass (NoMethodError)
item.quality
我知道 Ruby 有实例变量和类变量。 我试图在创建对象时在对象上定义一个实例变量。 做这样的事情的最佳实践是什么,记住我可能会扩展类并且我希望quality
属性被继承或覆盖?
例如
class SuperItem < Item
@quality = 50
end
在初始化程序中设置值。
class Item
attr_reader :quality
def initialize
@quality = default_quality
end
def reduce_quality
@quality -= 1
end
def default_quality
1
end
end
class SuperItem < Item
def default_quality
50
end
end
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.