Перестановка значений без использования временных переменных

Проблема

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

Решение

Воспользуйтесь присваиванием по списку:
($VAR1,  $VAR2) = ($VAR2, $VAR1);

Комментарий

В большинстве языков программирования перестановка значений двух переменных требует промежуточного присваивания:
$temp = $a;
$а    = $b;
$b    = $temp;
В Perl дело обстоит иначе. Язык следит за обеими сторонами присваивания и за тем, чтобы ни одно значение не было случайно стерто. Это позволяет избавиться от временных переменных:
$а = "alpha";
$b = "omega";
($а, $b) = ($b, $a);     # Первый становится последним - и наоборот
Подобным способом можно поменять местами сразу несколько переменных:
($alpha, $beta, $production) = qw(January March August);
# beta перемещается в alpha,
# production - в beta,
# alpha - в production
($alpha, $beta, $production) = ($beta, $production, $alpha);
После завершения этого фрагмента значения переменных $alpha, $beta и $production будут равны соответственно "March", "August" и "January".

См. также




2013-09-10 17:05:19

Proverte kod v komentariyah gde pro list tam oshibki detskie




Оставить комментарий:
Ваше Имя:
Email:
Антибот: *  
Ваш комментарий: