如何通过ruby中的名称冲突来解决问题
发布时间:2020-12-17 02:10:22 所属栏目:百科 来源:网络整理
导读:两个模块Foo和Baa分别定义了一个具有相同名称的方法,我确实包含了Foo并在特定的上下文中包含了Baa. 当我打电话给名字时,我怎么能消除是否要调用Foo或Baa的名字方法? 解决方法 只有模块包含的顺序决定了哪一个被调用.不能同时具有相同名称 – 后者将覆盖前者
两个模块Foo和Baa分别定义了一个具有相同名称的方法,我确实包含了Foo并在特定的上下文中包含了Baa.
当我打电话给名字时,我怎么能消除是否要调用Foo或Baa的名字方法? 解决方法
只有模块包含的顺序决定了哪一个被调用.不能同时具有相同名称 – 后者将覆盖前者.
当然,你可以做任何技巧,只是从我的头脑中: module A def foo :foo_from_A end end module B def foo :foo_from_B end end class C def initialize(from) @from = from end def foo from.instance_method(__method__).bind(self).call end private attr_reader :from end C.new(A).foo #=> :a_from_A C.new(B).foo #=> :a_from_B 但这对现实生活中的用例没有好处:) (编辑:李大同) 【声明】本站内容均来自网络,其相关言论仅代表作者个人观点,不代表本站立场。若无意侵犯到您的权利,请及时与联系站长删除相关内容! |