ruby – 将方法别名为单个对象
发布时间:2020-12-17 03:25:06 所属栏目:百科 来源:网络整理
导读:我正在尝试定义单例别名方法. 如: name = 'Bob'# I want something similar to this to workname.define_singleton_method(:add_cuteness,:+)name = name.add_cuteness 'by' 我确信我可以将方法对象作为第二个参数传递. 我不想这样做 name.define_singleton
我正在尝试定义单例别名方法.
如: name = 'Bob' # I want something similar to this to work name.define_singleton_method(:add_cuteness,:+) name = name.add_cuteness 'by' 我确信我可以将方法对象作为第二个参数传递. 我不想这样做 name.define_singleton_method(:add_cuteness) { |val| self + val } 我想别名String#方法不使用它. 解决方法
单例方法包含在该对象的单例类中:
class Object def define_singleton_alias(new_name,old_name) singleton_class.class_eval do alias_method new_name,old_name end end end rob = 'Rob' bob = 'Bob' bob.define_singleton_alias :add_cuteness,:+ bob.add_cuteness 'by' # => "Bobby" rob.add_cuteness 'by' # => NoMethodError Object#define_singleton_method基本上是这样的: def define_singleton_method(name,&block) singleton_class.class_eval do define_method name,&block end end (编辑:李大同) 【声明】本站内容均来自网络,其相关言论仅代表作者个人观点,不代表本站立场。若无意侵犯到您的权利,请及时与联系站长删除相关内容! |