方法的接收者是类本身(类对象)的方法称为类方法
. (类方法的操作对象不是实例, 而是类本身).
下面我们在 class << 类名 ~ end
这个特殊的类定义中, 以定义实例方法的形式来定义类方法.
class HelloWorld
end
class << HelloWorld
def hello(name)
puts "#{name} said hello."
end
end
HelloWorld.hello("John") #=> John said hello.
除了上述方式以外, 还可以在类定义中追加类方法的定义. 在class
语句中使用self
时, 引用的对象就是该类对象本身. 因此我们可以使用 class << self ~ end
这样的形式, 在 class 语句中定义类方法. 这种方式很常见.
class HelloWorld
class << self
def hello(name)
puts "#{name} said hello."
end
end
end
除此以外, 我们还可以使用 def 类名 . 方法名 ~ end
这样的形式来定义类方法
def HelloWorld.hello(name)
puts "#{name} said hello."
end
同样的, 只要在类定义中, 上述形式就可以写成下述形式:
class HelloWorld
def self.hello(name)
puts "#{name} said hello."
end
end
网友评论