Project1
标题:
要把一个模块的所有方法全部变成模块方法,这样可行吗?
[打印本页]
作者:
taroxd
时间:
2014-1-14 21:24
标题:
要把一个模块的所有方法全部变成模块方法,这样可行吗?
本帖最后由 taroxd 于 2014-1-15 15:28 编辑
[pre lang="ruby" line="1"]module A
#define methods...
end
class << A
include A
end[/pre]
如果不可行,有没有其他方法?会不会造成Bug?顺便问一句,模块Math是怎么实现这个效果的?
作者:
无脑之人
时间:
2014-1-14 21:55
module_function加在最上面
module A
module_function
def ...
end
复制代码
如果不想改动原脚本的话,用你那种方法或者
module B
extend B
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! X5.0