类方法的用途?

但是,有人可能会问,为什么你想要创建一个类方法而不是更常用的实例方法呢?有两个主要原因:首先,类方法可以用作“准备运行的函数”,而省去了为了使用它而创建对象的麻烦;其次,它可以在那些需要在创建对象实例之前运行方法的场合使用。

有关将方法用作“准备运行函数”的几个示例,请查看 File 类。它的许多方法都是类方法。这是因为,在大多数情况下,你将使用它们对现有文件执行操作或返回信息。你不需要创建一个 File 对象来执行这些操作,将文件名作为参数传递给类方法即可。这里有一些示例:

file_methods.rb
  1. fn = 'file_methods.rb'
  2. if File.exist?(fn) then
  3. puts(File.expand_path(fn))
  4. puts(File.basename(fn))
  5. puts(File.dirname(fn))
  6. puts(File.extname(fn))
  7. puts(File.mtime(fn))
  8. puts("#{File.size(fn)} bytes")
  9. else
  10. puts( "Can't find file!")
  11. end

在创建对象之前需要使用方法的情况下,类方法是至关重要的。最重要的例子是 new 方法。

你在每次创建对象时都会调用 new 方法。在创建对象实例之前,你显然无法调用其任一实例方法 - 因为你只能从已存在的对象中调用实例方法。当你使用 new 时,你正在调用类本身的方法并告诉类创建自己的新实例。