0
Object#send(:private_method)
을 통해 비공개 방법을 호출 할 수있는 이유는 무엇입니까?Object # send를 통해 private 메소드를 호출 할 수 있지만 직접 상기 메소드를 호출 할 수없는 이유는 무엇입니까?
특정 방법의 직접 호출을 막지 않으려면 Ruby의 키워드의 목적은 무엇입니까?
개체가 특정 메서드를 호출하지 못하도록 확실하게 방지 할 수 있습니까? (: private_method)
class Person
def say_hi
"hi"
end
private
def private_say_hi
"private hi"
end
end
me = Person.new
me.say_hi
#=> "hi"
me.private_say_hi
#Error: private method `private_say_hi' called for #<Person:0x00558df4b79a08>
me.send(:private_say_hi)
#=> "private hi"
인터페이스를 디자인 할 때 개인 메서드를 사용하여 메서드가 불안정하고 개체에서 직접 사용하지 않아야 함을 나타낼 수 있습니다. –
send 메서드를 완전히 사용하지 않고 경고 메시지를 표시하지만 다음은 private 메서드에 대한 액세스를 금지하는 send 메서드를 재정의하는 예제입니다. [link] (https://stackoverflow.com/ 질문/20639857/how-to-disable-a-certain-method-in-ruby-from-in-the-in-the-console) – Pend
많은 것을 무시해야합니다 ... https : // stackoverflow .com/questions/5349624/how-to-call-methods-dynamic-on-their-name/26284769 # 26284769 호출자에 관해서 싼 체크를 할 수 있습니다 ... –