Курс языка программирования Raku / Продвинутый уровень / Контейнеры / Скалярные контейнеры

Проксирование вызова методов

Быть скалярным контейнером фактически означает быть объектом типа Scalar. В большинстве случаев работа со скалярами настолько прозрачна, что разработчику не нужно думать о контейнере вообще — можно представлять, что работа идёт непосредственно со значениями, хранящимися в нём.

Это работает потому, что скалярный контейнер проксирует вызовы методов к хранящемуся в нём значению. Например, после присваивания my $lang = 'Raku' можно вызвать метод .chars на переменной:

my $lang = 'Raku';
say $lang.chars; # 4

Программа выводит 4 — количество символов в строке 'Raku'. Результат точно такой же, как если бы вы вызвали .chars непосредственно на строковом значении, а не на переменной-контейнере:

say 'Raku'.chars; # 4

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

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

Значения по умолчанию   |   Скидка по умолчанию


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