14

我想在不使用 Perl 中的第三个变量的情况下交换两个变量值,例如:

my $first = 10;
my $second = 20;

请建议我如何以简单的方式在 Perl 中做到这一点。

4

7 回答 7

24

仅提供给我们的最好方法是在一行中您可以交换值:

 ($first, $second) = ($second, $first);
于 2013-09-04T05:47:13.227 回答
23

你可以写:

($first, $second) = ($second, $first);

(参见Learning Perl,第三版中的§3.4“列表分配”。)

于 2013-09-04T05:44:26.140 回答
-1

已经列出的特定于 Perl 的方法是最好的,但这里有一种使用 XOR 的技术,它适用于多种语言,包括 Perl:

use strict;

my $x = 4;
my $y = 8;

print "X: $x  Y: $y\n";

$x ^= $y;
$y ^= $x;
$x ^= $y;

print "X: $x  Y: $y\n";

X: 4  Y: 8
X: 8  Y: 4
于 2013-09-05T03:56:40.607 回答
-4

您可以使用简单的数学相对容易地做到这一点。

我们知道;

First = 10
Second = 20

如果我们说First = First + Second

我们现在有以下内容;

First = 30
Second = 20

现在你可以说Second = First - Second (Second = 30 - 20)

我们现在有;

First = 30
Second = 10

现在从 First 减去 Second,得到First = 20, 和Second = 10

于 2013-09-04T05:46:35.383 回答
-5
$first = $first + $second;
$second = $first - $second;
$first = $first-$second;

这将交换两个整数变量更好的解决方案可能是

$first = $first xor $second;
$second = $first xor $second;
$first = $first xor $second;
于 2013-09-04T05:45:19.973 回答
-6
#!/usr/bin/perl

$a=5;
$b=6;

print "\n The value of a and b before swap is --> $a,$b \n";

$a=$a+$b;
$b=$a-$b;
$a=$a-$b;

print "\n The value of a and b after swap is as follows:";
print "\n The value of a is ---->$a \n";
print "\n The value of b is----->$b \n";
于 2014-07-25T18:14:50.823 回答
-6

你可以使用这个逻辑

firstValue = firstValue + secondValue;

secondValue = firstValue - secondValue;

firstValue = firstValue - secondValue;
于 2013-09-04T05:49:25.290 回答