论坛首页 编程语言技术论坛

Ruby定义静态方法

浏览 6273 次
精华帖 (0) :: 良好帖 (0) :: 新手帖 (7) :: 隐藏帖 (0)
作者 正文
   发表时间:2011-09-29  

有两种方法

1. 开源框架喜欢用的方式

class Test
   class << self
     def a
       puts "static method"
     end
   end
end

 

2. 我喜欢用的方式

class Test
     def self.a
       puts "static method"
     end
end

 

调用就很简单了

Test.a
 
   发表时间:2011-10-12  
我喜欢第一种, 习惯, 这种可以大批量定义, 第二种每次都要写self
0 请登录后投票
   发表时间:2011-10-13  
应该还有种,和第一种类似

def Test.a
...
end
0 请登录后投票
   发表时间:2011-10-14  
喜欢第一种~
0 请登录后投票
   发表时间:2011-10-14  
AndyTse 写道
应该还有种,和第一种类似

def Test.a
...
end


这个有个问题,就是每次该类名,还得改你这个方法定义,不太符合DRY原则。
0 请登录后投票
   发表时间:2011-10-14  
javafansmagic 写道
AndyTse 写道
应该还有种,和第一种类似

def Test.a
...
end


这个有个问题,就是每次该类名,还得改你这个方法定义,不太符合DRY原则。


1. 在某些时候你必须这么写.比如你要修改所有继承了该类的方法的时候.(在ruby中这种用法比较常见)

2. 这个也不算违反DRY,你既然要重构它就不可能只改一个类名,相关的生成器神马的都要改了.
0 请登录后投票
   发表时间:2011-10-14  
小弟新人,刚学一天,还只会第二种,呵呵。
0 请登录后投票
   发表时间:2011-10-20  
其实吧,class < self这样在写单例类时比较好,def self.xxx在写以instace class用起来看着舒服
0 请登录后投票
论坛首页 编程语言技术版

跳转论坛:
Global site tag (gtag.js) - Google Analytics