рубиновый эквивалент внутреннего ключевого слова в c #?

StackOverflow https://stackoverflow.com/questions/1625220

  •  06-07-2019
  •  | 
  •  

Вопрос

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

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

Это было полезно?

Решение

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

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

Лицензировано под: CC-BY-SA с атрибуция
Не связан с StackOverflow
scroll top