рубиновый эквивалент внутреннего ключевого слова в c #? - PullRequest
2 голосов
/ 26 октября 2009

в C # «внутренний» класс или метод можно вызывать только из той сборки, в которой он находится ... я знаю, что в Ruby нет «сборок» или каких-либо реальных пакетов, подобных им (кроме gems но на самом деле это не одно и то же), но мне интересно, есть ли способ ограничить местоположение, из которого можно вызывать метод, аналогично внутреннему?

Я обновляю небольшой фреймворк и создал класс, в котором есть 3 метода. Я хочу иметь возможность вызывать 2 из 3 методов только из моего фреймворка, а третий - из любого места. Это возможно в рубине? или я ошибаюсь и должен создавать два отдельных класса? или?

1 Ответ

2 голосов
/ 26 октября 2009

К сожалению, Ruby - это язык, которому не хватает инкапсуляции. Его возможности там весьма ограничены, поэтому нет ничего эквивалентного внутреннему ключевому слову C #. Возможно, в вашем случае лучше использовать два отдельных класса, но чистая строка документации или специальная схема именования могут сделать то же самое без серьезных изменений.

Кроме того, вы должны заметить, что ключевое слово internal - не более чем удобство для разработчиков библиотек. Это не мешает кому-либо использовать метод или класс, помеченный как внутренний, есть способ обойти эту защиту с помощью внедрения кода, AOP и т. Д.

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