繁体   English   中英

Ruby 类实例变量与 php 属性

[英]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.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM