【发布时间】:2016-01-14 13:40:37
【问题描述】:
我有以下 Ruby 命名空间问题:
我在“库”中有许多顶级方法,其中我有一个 get_name(param) 方法。 问题是我想在一个拥有自己的 get_name() 方法(没有参数!)的类中使用这个 get_name(param) 方法。 当然这会导致问题,因为这两种方法不同,并且类中的新方法会覆盖顶级方法。
有没有办法做这样的事情:
def get_name(param)
puts param
end
class Foo
def get_name()
puts "name"
end
def bar()
self.get_name() #should work and print name, i.e. it uses the get_name method of Foo
get_name("abc") #should work and print abc, i.e. it uses the top-level method
end
end
我想知道是否有一种简单的方法可以实现这一点,而无需更改顶级方法的名称或范围。 (目标是让那些无需修改即可作为全局方法使用,但仍然能够调用 Foo 的实例方法而不会出错。
【问题讨论】:
-
我的建议:只需在顶层创建一个别名。别名不会修改它们的原像 ;-)
-
这没有意义。顶级
get_name方法是一个实例方法,但您正试图在Foo实例上调用它。
标签: ruby