class Foo
def self.bar()
puts("bar")
end
private_class_method :bar
def self.foo()
self.bar()
end
end
鉴于上面的示例,为什么这样做:
> Foo.foo()
NoMethodError: private method `bar' called for Foo:Class
代替:
> Foo.foo()
=> bar
我正在尝试创建由“帮助器”方法Thing.helper(...)
等组成的类/名称空间...我希望将内部方法的作用域设为私有范围,以便至少有人必须摆脱困境直接给他们打电话。有什么方法可以实现我想要的?
Java等价物:
class Foo {
private static void bar() {
System.out.println("bar");
}
public static void foo() {
bar();
}
}
答案 0 :(得分:2)
这是因为您尝试使用显式接收器self
调用私有方法。简单尝试
def self.foo
bar
end