나는 Beginning Ruby을 통해 읽고 있는데 개인적으로나 보호 된 방법에 관해서는 고민하고 있습니다. 이것은 초보자 질문입니다. 그래서 조금씩 검색했지만 개인적 방법과 보호 된 방법의 차이에 대해 명확하고 초보자 친화적 인 설명을 찾을 수 없었습니다.보호 된 방법과 개인 방법
이 책은 두 가지 예는 최초의 민간 방법에 대한 하나 제공 : 나는
p = Person.new("Fred Bloggs")
p.set_last_name("Smith")
그것은 내가 set_last_name을 사용할 수 없다는 것을 말해됩니다하려고하면,이 경우
class Person
def initialize(name)
set_name(name)
end
def name
@first_name + ' ' + @last_name
end
private
def set_name(name)
first_name, last_name = name.split(/\s+/)
set_first_name(first_name)
set_last_name(last_name)
end
def set_first_name(name)
@first_name = name
end
def set_last_name(name)
@last_name = name
end
end
을 왜냐하면 그것은 사적이기 때문입니다. 거기까지 좋은. 보호로
그러나, 다른 예를 들어, 그들은 나이 방법을 정의하고 내가
fred = Person.new(34)
chris = Person.new(25)
puts chris.age_difference_with(fred)
puts chris.age
을 할 때 오류 제공합니다
:20: protected method 'age' called for #<Person:0x1e5f28 @age=25> (NoMethodError)
는 솔직히 사이의 차이를 볼 실패를 개인적이고 보호 된 방법을 사용하면 나에게도 똑같은 소리가납니다. 누군가 나에게 명확한 설명을 해줄 수 있었을 것인가?
필요한 경우 두 번째 예제에 대한 코드를 제공합니다.
Checkout http://stackoverflow.com/questions/3534449/why-does-ruby-have-both-private-and-protected-methods –