Синтаксис типа функции ruby ​​в классе - PullRequest
0 голосов
/ 12 октября 2011

Если у меня есть класс в Ruby:

class Person
  def get_person

  end

  protected
  def check_person_1

  end
  def check_person_2

  end

  private
  def auth_person_1

  end
  def auth_person_2

  end

end

- это auth_person_2 приватная функция или публичная или защищенная функция?Я имею в виду, что у меня нет ключевого слова " private " над именем функции, но оно находится под функцией auth_person_1, которая, однако, находится непосредственно под " private ", какой тип функции auth_person_2 есть в этом случае?а как насчет функции check_person_2?

Ответы [ 2 ]

2 голосов
/ 12 октября 2011

в этом случае auth_person1 / 2 будет частным, check_person1 / 2 будет защищен, а get_person будет общедоступным.

Функции ищут последнее ключевое слово и используют его.

Вытакже можно сделать это следующим образом:

class Person
def method1
end
def method2
end
def method3
end
def method4
end

public :method1, :method4
protected :method2
private :method3

end

Выполнение чего-либо подобного также будет работать:

class Person
def method
end

private
def method1
end

public
def method2
end
end

Вы можете иметь их в любом порядке и использовать одно и то же ключевое слово более одного раза.

0 голосов
/ 12 октября 2011

Ruby не похож на C #, где вы должны определить инкапсуляцию для каждого метода.

Все, что ниже для метода "private", является приватным, пока вы не вызовете один из других методов (private, public или protected).Например, вы можете использовать «public» для определения публичного метода после блока приватных.

По умолчанию ваш класс является публичным.

class Hello
  ...
end

совпадает с

class Hello
  public
  ...
end
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...