我现在正在读一本叫Practical Object Oriented Design in Ruby的书我是Ruby新手,我知道只要你理解了这些概念,就不需要理解书中的代码,我是这么做的,但是我在第2章中发现的一段代码让我有些困扰。
在第二章中,作者展示了下面的Ruby类。。。

class Gear
    attr_reader :chainring, :cog
    def initialize(chainring, cog)
        @chainring = chainring
        @cog       = cog  6
    end

     def ratio
        chainring / cog.to_f
    end
end

puts Gear.new(52, 11).ratio
puts Gear.new(30, 27).ratio

我不知道的是,她说这个类包含三个方法,chainringcogratio,但我只看到一个方法(ratio)和两个符号(chainringcog)。
有人能验证上面的代码并告诉我这是作者的错误还是实际上有三种方法?
书中引用:
每个实例实现三种方法:chainringcogratio
谢谢

最佳答案

两种方法(chainringcog)由attr_reader隐式定义:

attr_reader :chainring, :cog

10-01 14:08