【发布时间】:2014-10-20 11:03:45
【问题描述】:
以下定义了一个具有大写名称的方法,并尝试调用它,但失败了:
class Module
def Foo; puts "foo" end
end
class A
Foo
end
# => uninitialized constant A::Foo
我知道同名常量的存在优先于方法查找,但在这种情况下没有这样的常量。
如果我将其作为一种方法进行消歧,则检测到该方法:
class A
Foo()
end
# => foo
方法名不大写时,查找不会失败。
class Module
def foo; puts "foo" end
end
class A
foo
end
# => foo
为什么方法查找会因不明确的 upcased 方法而失败?
【问题讨论】: