Project1

标题: 要把一个模块的所有方法全部变成模块方法,这样可行吗? [打印本页]

作者: taroxd    时间: 2014-1-14 21:24
标题: 要把一个模块的所有方法全部变成模块方法,这样可行吗?
本帖最后由 taroxd 于 2014-1-15 15:28 编辑

RUBY 代码复制
  1. module A
  2.   #define methods...
  3. end
  4.  
  5. class << A
  6.   include A
  7. end


如果不可行,有没有其他方法?会不会造成Bug?顺便问一句,模块Math是怎么实现这个效果的?
作者: 无脑之人    时间: 2014-1-14 21:55
module_function加在最上面
  1. module A
  2.   module_function
  3.   def ...
  4. end
复制代码
如果不想改动原脚本的话,用你那种方法或者
  1. module B
  2.   extend B
  3. end
复制代码
据说还可以用Method和UnboundMethod实现,不过没必要了
作者: taroxd    时间: 2014-1-15 09:17
本帖最后由 taroxd 于 2014-1-15 11:21 编辑
无脑之人 发表于 2014-1-14 21:55
module_function加在最上面如果不想改动原脚本的话,用你那种方法或者据说还可以用Method和UnboundMethod实 ...


谢谢!前者我是知道的,但是我要保留原方法,并且定义中用到了super

第二种就是我想要的方式,再问一句,extend self 可以吗?有环境了,测试可行




欢迎光临 Project1 (https://rpg.blue/) Powered by Discuz! X3.1