Курс языка программирования Raku / Объекты, ввод-вывод и исключения / Классы и объекты / Методы

Приватные атрибуты

В разделе об атрибутах каждый атрибут объявлялся через $., что создаёт публичный аксессор. Атрибут, объявленный через $!, наоборот, является приватным: у него нет аксессора, и снаружи объекта его не видно. Он доступен только из методов самого класса, где к нему обращаются как $!name.

class Safe {
    has $!code = 4321;

    method unlocks($attempt) {
        return $attempt == $!code;
    }
}

my $safe = Safe.new;
say $safe.unlocks(4321); # True
say $safe.unlocks(1111); # False

Секретный $!code хранится внутри объекта, но никогда не раскрывается: аксессора .code нет, поэтому единственный способ работать с ним — метод unlocks, который класс решил предоставить. Попытка прочитать $safe.code или $safe!code просто не сработает.

Приватные атрибуты полезны для внутренних деталей, к которым остальной программе не следует обращаться напрямую.

Навигация по курсу

Методы   |   Методы с параметрами


💪 Или перейдите сразу к упражнениям этого раздела.