Курс Raku / Основи / Основи змінних і типів даних / Рядки

Екранування спеціальних символів

Уявіть, що ви хочете надрукувати цінник і зберігаєте як назву продукту, так і його ціну в скалярних змінних?

my $product = 'Electricity';
my $price = 3.14;

Як надрукувати цінник, якщо ціна має бути в доларах? Очікуваний результат: Electricity costs $3.14. Знак долара в рядках з подвійними лапками є індикатором змінної для інтерполяції. Щоб надрукувати сам символ $, потрібно його екранувати:

say "$product costs \$$price";

Звичайно, ви можете використовувати конкатенацію рядків і уникнути екранування $:

say $product ~ ' costs $' ~ $price;

Цей варіант друкує точно такий же рядок, але інтерполяція виглядає більш природною і легшою для читання. Зверніть увагу, що символ $ не був інтерпольований або екранований у рядку з одинарними лапками: ' costs $'. Це головна відмінність. Спеціальні символи в одинарних лапках з’являються як є.

Ось ще кілька спеціальних символів, які мають особливе значення в рядках з подвійними лапками:

\$ | Знак долара \n | Новий рядок \r | Повернення каретки \t | Горизонтальна табуляція \" | Подвійна лапка \\ | Зворотна коса риска

Спосіб, яким ви цитуєте рядок, визначає, як Raku обробляє спеціальні символи. Розгляньте ці два приклади:

say 'One\nTwo';
say "Three\nFour";

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

One\nTwo
Three
Four

У подвійних лапках спеціальна послідовність \n була оброблена як символ нового рядка, тоді як у рядку в одинарних лапках це була звичайна послідовність з двох символів: \ і n.

Є цікаве виключення для ' і \. В одинарних лапках ви можете екранувати одинарну лапку, додавши перед нею ще одну \:

say '\''; # '

Зворотна коса риска також має бути екранована, якщо за нею слідує одинарна лапка:

say 'a\b\c\\'; # a\b\c\

Практика

Виконайте 1 тест за змістом цієї теми.

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

Інтерполяція коду   |   Тест: Зворотна коса риса у виводі


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