最近、私はブログでこのPerl式に出くわしましたが、目的をつかむことができませんでした。
my $success = 1;
$success &&= $insert_handle->execute($first, $last, $department);
$success &&= $update_handle->execute($department);
最近、私はブログでこのPerl式に出くわしましたが、目的をつかむことができませんでした。
my $success = 1;
$success &&= $insert_handle->execute($first, $last, $department);
$success &&= $update_handle->execute($department);
EXPR1 &&= EXPR2;
の略です
EXPR1 = EXPR1 && EXPR2;
(一度だけ評価される場合を除きEXPR1
ます。*)
提供されたコード
my $success = 1;
$success &&= $insert_handle->execute($first, $last, $department);
$success &&= $update_handle->execute($department);
次のように書くこともできます:
my $success = 0;
if ($insert_handle->execute($first, $last, $department)) {
if ($update_handle->execute($department)) {
$success = 1;
}
}
また
my $success = $insert_handle->execute($first, $last, $department)
&& $update_handle->execute($department);
* —これEXPR1
は、副作用がある場合に重要です。これは、魔法の変数または左辺値のサブである場合に非常によく発生する可能性があります。
my $x = 3; # Prints:
print("$x\n"); # 3
sub x() :lvalue { print("x\n"); $x }
x &&= 4; # x
print("$x\n"); # 4
x = x && 5; # x x
print("$x\n"); # 5
それは長い言い方です。
my $success =
$insert_handle->execute($first, $last, $department)
&& $update_handle->execute($department);
かもしれない:-
my $success = 1;
$success = $success && $insert_handle->execute($first, $last, $department);
$success = $success && $update_handle->execute($department);
に似ている : -
a += b
// is equivalent to
a = a + b