Project1
标题:
[开发用]alias_methods(Update Again!)
[打印本页]
作者:
忧雪の伤
时间:
2011-6-20 21:05
标题:
[开发用]alias_methods(Update Again!)
本帖最后由 忧雪の伤 于 2011-6-21 15:29 编辑
class Module
def alias_methods(prefix, *methods)
methods.each {|item| (prefix = prefix + prefix
) while method_defined?("#{prefix}#{item}") }
methods.each {|item| alias_method("#{prefix}#{item}", item) }
methods.collect {|item| "#{prefix}#{item}".to_sym }
end
end
复制代码
Module#alias_methods(prefix, method1[, method2 ... ])
Module#alias_methods(prefix, method1[, method2 ... ])
依次把
prefix
作为前缀定义 method1、method2 ... 的别名。
别名存在的场合,自动叠加前缀。
返回处理顺序的别名的数组。
例:
module Foo
def foo
end
def pia
end
alias_methods(:_, :foo, :pia)
end
print Foo.method_defined?(:_foo) # => true
print Foo.method_defined?(:_pia) # => true
复制代码
各种重大更新……谢谢 zh 啥的……
思路来源可以点击这里查看。
作者:
darkscout3000
时间:
2011-6-21 04:07
这个就是⋯⋯可以快速给多个方法别名?
然后那个⋯⋯有点不明白的地方⋯⋯
args[1].to_a unless args[1].is_a?(Array)
复制代码
这行code看起来基本上就假设args[1]是数列了?
印象中没有多少类有to_a的方法吧⋯⋯
作者:
忧雪の伤
时间:
2011-6-21 12:18
本帖最后由 忧雪の伤 于 2011-6-21 12:23 编辑
darkscout3000 发表于 2011-6-21 04:07
这个就是⋯⋯可以快速给多个方法别名?
然后那个⋯⋯有点不明白的地方⋯⋯这行code看起来基本上就假设args ...
话说到底是to_a还是to_ary?
这只是方便而已。
to_a 和 to_ary 都确认可以了。
to_a的一个例子。
print (1...3).to_a
复制代码
忧雪の伤于2011-6-21 12:42补充以下内容:
各种更新自顶。
作者:
Zhen~败类
时间:
2011-6-21 12:44
板凳都没了,还让我怎么活、
作者:
DeathKing
时间:
2011-6-21 13:26
哈哈,的确是个好功能,想想,以前加强默认脚本的时候,需要自己手工 alias 多少 method 啊……
可以考虑加入一个新功能,比如,给符合正则式的方法重命名什么的。
欢迎光临 Project1 (https://rpg.blue/)
Powered by Discuz! X3.1