class Player
include Playable
attr_reader :points
attr_accessor :health, :name
def initialize(name, health=100, points=0)
@name = name.capitalize
@health = health
@found_treasures = Hash.new(0)
@points = points
end
end
module Playable
def blam
self.health -= 10
puts "#{name} just got blammed yo."
end
def w00t
self.health += 15
puts "\n#{name} just got w00ted."
end
def score
self.health + points
end
def strong?
health > 100
end
end
所以在上面的代碼中的實例方法中,我明白的是,爲了設置屬性的健康,它需要1)是在類的存取方法,我包括模塊in和2)它需要模塊中的自我。紅寶石自我在模塊
在這種情況下,自我指的是什麼?由於模塊中的方法是實例方法,因此需要在對象上調用它們,所以self指向Player類的實例?如果這是正確的,那麼self.health指的是一個attr_accessor方法,這段代碼很有意義。沒有「自我」這個詞,它會是一個局部變量賦值是否正確?這是什麼?
不,「健康」和「self.health」一樣是對訪問者的調用。儘管如此,「self.health」更加明確和可讀。 – Amadan 2014-11-25 06:48:21