Я на собеседовании в одной конторе, столкнулся с тем, что полностью все вопросы спрашивали из базы ХП :) Хорошенько если проштудировать, то на уровень мидла с головой хватит. А может вполне и на сеньера :)
Чтобы понять подробнее, можно погуглить про геттеры и сеттеры в Java
дык это-то знаю. они и в С++. Прям с языка снял про геттеры и сеттеры. Их в руби синтаксисе так тактично обходят, что подозреваю ,что в руби и дженерики есть))
дык это-то знаю. они и в С++. Прям с языка снял про геттеры и сеттеры. Их в руби синтаксисе так тактично обходят, что подозреваю ,что в руби и дженерики есть))
В руби еще такое прикол, что всё объекты. Когда создаешь новый класс, то у Object создается константа с его именем
так attr_reader - это же "синтаксический сахар". для гетера, attr_accessor - и геттер и сеттер обьявит. Можешь то же самое сделать без традиционным способом через def-ы.
attr_reader :foo
def foo @foo end
attr_writer :foo
def foo=(arg) @foo = arg end
просто attr_reader/writer/accessor "скрывают от тебя это / упрощают синтаксис"
а если не @foo, а просто foo какой будет attr_reader?
просто foo ты обозначишь в методе класса, например, но обратиться к нему из экземпляра класса не сможешь. Поле видимости локальной переменной это блок кода в котором она выполняется
просто foo ты обозначишь в методе класса, например, но обратиться к нему из экземпляра класса не сможешь. Поле видимости локальной переменной это блок кода в котором она выполняется
а когда attr_accessor делаешь то это всегда прописывание переменной класса или reader или writer
так attr_reader - это же "синтаксический сахар". для гетера, attr_accessor - и геттер и сеттер обьявит. Можешь то же самое сделать без традиционным способом через def-ы.
attr_reader :foo
def foo @foo end
attr_writer :foo
def foo=(arg) @foo = arg end
просто attr_reader/writer/accessor "скрывают от тебя это / упрощают синтаксис"
Если речь про это, то это метод описывает присваивание, если в методе foo=(arg) вместо @foo=arg написать @foo = arg.to_i * 2, А код в программе будет @foo=arg, при arg =2, @foo будет равен 4