Курс Раку / Основи / Рядки

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

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

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\

Практика

Виконайте вікторину, що охоплює зміст цієї теми.

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

Рядки / Інтерполяція коду   |   Рядки / Довжина рядка


💪 Or jump directly to the exercises to this section.

Ця сторінка автоматично перекладена за допомогою ChatGPT 4o. Оригінальний текст англійською мовою.

Переклади цієї сторінки: EnglishDeutschEspañolItalianoLatviešuNederlandsБългарскиРусскийУкраїнська