Перестановка значений без использования временных переменных
Проблема
Требуется поменять значения двух скалярных переменных, но вы не хотите использовать временную переменную.
Решение
Воспользуйтесь присваиванием по списку:
($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".
См. также
Proverte kod v komentariyah gde pro list tam oshibki detskie
Оставить комментарий:
|
|