Ruby extend self

720 查看

figaro这个项目中看到 extend self的用法.

module Util
  extend self

  def double(i)
    i * 2
  end
end

puts Util.double(4) #=> 8

module是不能实例化的,extend self 会把module的实例方法作为类方法暴露,
self在例子中是Util,在Ruby中,Object.extend方法使指定模块的实例方法成为接收者的
单键方法. 接收者是Class实例, 这些方法就成为类方法.

资料: