Курс Raku / Розширені / Контейнери / Скалярні контейнери

Проксіювання викликів методів

Бути скалярним контейнером насправді означає бути об’єктом типу Scalar. У більшості випадків використання скалярів настільки прозоре, що розробнику взагалі не доводиться думати про контейнер і можна уявляти, ніби він працює напряму зі значеннями, що в ньому зберігаються.

Це працює тому, що скалярний контейнер проксіює виклики методів до значення, яке він зберігає. Наприклад, після присвоєння my $lang = 'Raku' метод .chars можна викликати для змінної:

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

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

say 'Raku'.chars; # 4

Іншими словами, контейнер тихо переадресовує виклик .chars рядку, який він містить, і повертає вам результат.

Навігація курсом

Значення за замовчуванням   |   Знижка за замовчуванням


💪 Або перейдіть одразу до вправ цього розділу.