Курс Raku / Розширені / Докладніше про вбудовані типи / Конструкції квотування 🆕 / Вправи / Замикання в q-рядку
Розв’язання: Замикання в q-рядку
Ось один із можливих варіантів розв’язання задачі.
Код
my $x = 10;
say q:c/$x squared is {$x ** 2}/;🦋 Вихідний код можна знайти у файлі closure-quote.raku.
Вивід
$x squared is 100Коментарі
Наріччя
:c(closure) вмикає інтерполяцію вбудованого коду{ … }у буквальній в інших випадках форміq. Усередині фігурних дужок$xє справжнім кодом, тож{$x ** 2}обчислюється в100.$xза межами дужок залишається точно таким, як записано, бо наріччя скалярів:sне ввімкнено. У цьому й полягає весь сенс наріч для окремих можливостей: ви отримуєте вбудований код, не вмикаючи заразом інтерполяцію$.Наріччя можна нанизувати. Додайте ще й
:s— і провідний$xтеж інтерполюється: обидві можливості тепер увімкнено водночас:
my $x = 10;
say q:c:s/$x squared is {$x ** 2}/; # 10 squared is 100Навігація курсом
← Замикання в q-рядку | Heredoc →