说我有以下代码
class Monster
def self.yell
'i am yelling!'
end
def shout_something
Monster.yell
end
end
我的yell
方法是一种类方法,而shout_something
是一种调用yell
的实例方法。
做这样的事情有什么本质上的错误吗?例如,从实例方法调用类方法是不是很糟糕?我问,因为它感觉不对,但也许只是因为我是红宝石的新手。
另一方面,我认为做self.yell
代替Monster.yell
会更有意义,但它不起作用。
答案 0 :(得分:4)
从实例方法调用类方法没有什么特别的错误。根据您的意图以及您希望人们如何将您的Monster子类化,您可能想要使用它:
def shout_something
self.class.yell
end
这样子类可以提供他们的yell
类方法。