Программирование на языке Ruby
Программирование на языке Ruby читать книгу онлайн
Внимание! Книга может содержать контент только для совершеннолетних. Для несовершеннолетних чтение данного контента СТРОГО ЗАПРЕЩЕНО! Если в книге присутствует наличие пропаганды ЛГБТ и другого, запрещенного контента - просьба написать на почту [email protected] для удаления материала
puts "Это строка." when Numeric puts "Это число." else puts "Это что-то совсем другое."endЭта конструкция работает, потому что в классе
Module===an_objectstring === an_objectcaseНаконец, в Ruby реализован оператор сопоставления с образцом
=~У операторов
===~!=!~==!=11.1.8. Управление доступом к методам
В Ruby объект определяется, прежде всего, своим интерфейсом: теми методами, которые он раскрывает внешнему миру. Но при написании класса часто возникает необходимость во вспомогательных методах, вызывать которые извне класса опасно. Тут-то и приходит на помощь метод
privateModuleИспользовать его можно двумя способами. Если в теле класса или модуля вы вызовете
privateclass Bank def open_safe # ... end def close_safe # ... end private :open_safe, :close_safe def make_withdrawal(amount) if access_allowed open_safe get_cash(amount) close_safe end end # Остальные методы закрытые.private def get_cash # ... end def access_allowed # ... endendПоскольку методы из семейства
attrprivateРеализация метода
privateselfМодификатор доступа
protectedPersonPersonclass Person def initialize(name, age) @name, @age = name, age end def <=>(other) age <=> other.age end attr_reader :name, :age protected :ageendp1 = Person.new("fred", 31)p2 = Person.new("agnes", 43)compare = (p1 <=> p2) # -1x = p1.age # Ошибка!Чтобы завершить картину, модификатор
publicИ последнее: методы, определенные вне любого класса и модуля (то есть на верхнем уровне программы), по умолчанию закрыты. Поскольку они определены в классе
Object11.1.9. Копирование объектов
Встроенные методы
Object#clone#dup#dupclones1 = "cat"def s1.upcase
