If I have a class in Ruby:
class Person
def get_person
end
protected
def check_person_1
end
def check_person_2
end
private
def auth_开发者_StackOverflow中文版person_1
end
def auth_person_2
end
end
is auth_person_2
a private function or public or protected function? I mean I do not have the "private" keyword above the function name, but it is under the auth_person_1
function which is however directly under "private", what function type auth_person_2
is in this case? and how about function check_person_2
?
in this case auth_person1/2 would be private, check_person1/2 would be protected and get_person would be public.
Functions look for the last keyword and that's what they use.
You can also do it this way :
class Person
def method1
end
def method2
end
def method3
end
def method4
end
public :method1, :method4
protected :method2
private :method3
end
Doing something like this would also work :
class Person
def method
end
private
def method1
end
public
def method2
end
end
You can have them in any order and use the same keyword more than once.
Ruby is not like C# where you have to define the encapsulation for each method.
Everything bellow the method "private" is private until you call one of the other methods (private, public or protected). For example, you can use "public" to define a public method after a block of private ones.
By default your class is public.
class Hello
...
end
is the same as
class Hello
public
...
end
精彩评论