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
출력은 다음과 같이해야 하는가? 이것은 버그 여야합니다. 그렇지 않으면 정보 캡슐화에 대한 중요한 위반입니다. 맞습니까?이것은 루비의 캡슐화를 위반하는 간단한 방법입니까?</p> <pre><code>Hi NoMethodError: private method `private_bar' </code></pre> <p>그러나, 출력은 다음과 같습니다 :</p> <pre><code>Hi Oi, you don't work </code></pre> <p>왜 이런 일이
http://stackoverflow.com/a/896633/10396 – AShelly