class Foo
@@first_time = true
def self.private_bar
if @@first_time
puts "Hi"
else
puts "Oi, you don't work here"
end
@@first_time = false
end
private_class_method :private_bar
public
def calling_private_method
self.class.send :private_bar
another_private_bar
end
end
f=Foo.new
f.calling_private_method
f.class.send :private_bar
输出应该是这样的:这是一个违反红宝石封装的简单方法吗?
Hi
NoMethodError: private method `private_bar'
但是,输出是:
Hi
Oi, you don't work
这究竟是为什么?这必须是一个错误,否则它是对信息封装的重要违反,对吗?
http://stackoverflow.com/a/896633/10396 – AShelly