PERL: БИБЛИОТЕКА ПРОГРАММИСТА


PERL: БИБЛИОТЕКА ПРОГРАММИСТА - стр. 44


Не пытайтесь распространить это любопытное применение 11 и 11 = со скаляр­ных величин на массивы и хэши. У вас ничего не выйдет, потому что левый опе­ранд интерпретируется в скалярном контексте. Приходится делать что-нибудь подобное:

@а = @b unless @а;    # Копировать, если массив пуст

@а = @Ь ? @Ь : @с;   # Присвоить @Ь, если он не пуст, иначе @с

> Смотри также---------------------------------------------------------------------------------------------

Описание оператора | | врег1ор(1); описание функций defined и exists вреИ-func{\).

1.3. Перестановка значений

без использования временных переменных

Проблема

Требуется поменять значения двух скалярных переменных, но вы не хотите использовать временную переменную.


34   Глава 1 • Строки

Решение

Воспользуйтесь присваиванием по списку:

($VAR1,   $VAR2)  =  ($VAR2,   $VAR1),

Комментарий

В большинстве языков программирования перестановка значений двух перемен­ных требует промежуточного присваивания:

$terap = $a, $а = $Ь, $b  = Sterap

В Perl дело обстоит иначе Язык следит за обеими сторонами присваивания и за тем, чтобы ни одно значение не было случайно стерто. Это позволяет избавить­ся от временных переменных:

$а  = alpha

$b   = omega ,

($а $b) = ($Ь $а),  # Первый становится последним - и наоборот

Подобным способом можно поменять местами сразу несколько переменных:

($alpha $beta, $production) = qw(January March August)

# beta перемещается в alpha,

#  production - в beta

#  alpha - в production

($alpha, $beta, $production) = ($beta, Sproduction, $alpha),

После завершения этого фрагмента значения переменных $alpha, $beta и

$production будут равны соответственно   March ,   August   и   January .

> Смотри также---------------------------------------------------------------------------------------------

Раздел «List value constructors» perlop(i).

1.4. Преобразование между символами и ASCII-кодами

Проблема

Требуется вывести код, соответствующий некоторому символу в кодировке ASCII, или наоборот — символ по ASCII-коду.




Начало  Назад  Вперед



Книжный магазин