Perl で 3 番目の変数を使用せずに 2 つの変数の値を交換したい、例えば:
my $first = 10;
my $second = 20;
これを Perl で簡単に行う方法を教えてください。
Perl で 3 番目の変数を使用せずに 2 つの変数の値を交換したい、例えば:
my $first = 10;
my $second = 20;
これを Perl で簡単に行う方法を教えてください。
私たちだけを提供する最良の方法は、値を交換できる1行で次のようになります。
($first, $second) = ($second, $first);
あなたは書ける:
($first, $second) = ($second, $first);
( Learning Perl , Third Editionの §3.4 "List Assignment"を参照してください。)
既にリストされている Perl 固有の方法が最適ですが、Perl を含む多くの言語で機能する XOR を使用した手法を次に示します。
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
これは、単純な数学を使用して比較的簡単に行うことができます。
私たちは知っています。
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
。
$first = $first + $second;
$second = $first - $second;
$first = $first-$second;
これは2つの整数変数を交換しますより良い解決策は
$first = $first xor $second;
$second = $first xor $second;
$first = $first xor $second;
#!/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";
このロジックを使用できます
firstValue = firstValue + secondValue;
secondValue = firstValue - secondValue;
firstValue = firstValue - secondValue;