`

Ruby extend self

阅读更多
我们想让实例方法同时为类方法,那么可以使用extend self,这个对于普通的类
可能没有什么用。但是对于module来说还是很有用的,因为module不可以实例化,
module的实例方法通过自身就无法单元测试,所以通过extend self可以作为类方法暴露
来测试了:
module M  
  extend self  
  def greeting  
    puts "hi"  
  end  
end  


如果没有extend self,我们就无法使用M.greeting,
现在我们可以调用M.greeting了。
分享到:
评论

相关推荐

    Ruby 中的 module_function 和 extend self异同

    本文主要给大家介绍了在Ruby中 module_function 和 extend self的共同点和区别,非常的详细,也很实用,方便大家更好的理解的module_function 和 extend self

    array_extend:Gem array_extend

    弃用说明 此宝石不再维护。 数组扩展 扩展 ruby​​ 数组。 没有覆盖。 支持 验证 Ruby 1.9.3 和 Ruby ree-1.8.7 安装 将此行添加到应用程序的 Gemfile 中: gem 'array_extend' ... self [ index ( val ) + 1 ]

    rubyspeed:将ruby函数编译为C

    Rubyspeed 工作正在进行中。 欢迎使用Rubyspeed。... def self . dot ( a , b ) c = Rubyspeed :: Let . int ( 0 ) a . each_with_index do | a_val , idx | c += a_val * b [ idx ] end c end end 这将

    defp:Ruby的图案匹配

    国防部 受haskell启发的Ruby模式匹配实现。 如果您想了解defp的内部工作原理,请。安装将此行添加到您的应用程序的Gemfile中: gem 'defp' 然后执行: $ bundle或将其自己安装为: $ gem install defp用法 class ...

    Ruby on Rails中的ActiveResource使用详解

    当 HTTP 响应是一个与存在的格式不同的格式时(XML 和 JSON),需要某些额外的格式解析,创一个你惯用的格式,并在类别中使用它。惯用的格式应当实作下列... extend self def extension 'csv' end def mime_type

    resque-dedup:Resque 插件,用于确保同一作业不会多次排队

    def self.perform(some_id) heavy_lifting end end 任何时候都只会将这个作业的一个实例加入队列。 作业由lock键标识, lock键是其名称和提供给它的参数的组合。 如果你想自己定义这个key,你可以在你的子类中...

    resque-worker-timeout:Resque worker 超时插件

    resque-worker-timeout Resque 插件。 如果您想设置工作超时,请使用此模块扩展它。... def self . perform ( file_name ) # transfer file end end 有助于 resque-worker-timeout 查看最新的 maste

    resque-logstash:用于在 logstash 中记录作业持续时间的 Resque 插件

    Resque::Logstash 在 logstash 中记录 resque 作业的持续时间。 目前仅支持 redis 传输。... new ( 'localhost' , 6379 )class SomeJob extend Resque :: Plugins :: Logstash def self . perform # do

    attach_function

    AttachFunction 定义了新方法,这些方法是目标函数的部分应用,其中目标函数的第一个参数固定为 self。 新定义的方法的名称将是目标函数的基本名称(模块路径被剥离)或用户指定的名称。 相对指定的参数函数的接​...

    resque-batched-job:能够理解单个工作的Resque插件可以属于比自己更大的东西

    Resque批处理作业 一个插件。 需要Resque> = 1.10.0...安装 $ gem install resque-batched-job例子 require 'resque/batched_job'module Job extend Resque :: Plugins :: BatchedJob def self . perform ( bid , * arg

Global site tag (gtag.js) - Google Analytics