您的当前位置:首页正文

Ruby 类方法

来源:要发发知识网

方法的接收者是类本身(类对象)的方法称为类方法. (类方法的操作对象不是实例, 而是类本身).
下面我们在 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