最近我在博客上遇到了这个Perl表达,无法抓住它的目的.
my $success = 1;
$success &&= $insert_handle->execute($first, $last, $department);
$success &&= $update_handle->execute($department);
Run Code Online (Sandbox Code Playgroud)
EXPR1 &&= EXPR2;
Run Code Online (Sandbox Code Playgroud)
是的缩写
EXPR1 = EXPR1 && EXPR2;
Run Code Online (Sandbox Code Playgroud)
(除了EXPR1仅评估一次.*)
提供的代码
my $success = 1;
$success &&= $insert_handle->execute($first, $last, $department);
$success &&= $update_handle->execute($department);
Run Code Online (Sandbox Code Playgroud)
也可以写成:
my $success = 0;
if ($insert_handle->execute($first, $last, $department)) {
if ($update_handle->execute($department)) {
$success = 1;
}
}
Run Code Online (Sandbox Code Playgroud)
要么
my $success = $insert_handle->execute($first, $last, $department)
&& $update_handle->execute($department);
Run Code Online (Sandbox Code Playgroud)
* - 如果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
Run Code Online (Sandbox Code Playgroud)
| 归档时间: |
|
| 查看次数: |
348 次 |
| 最近记录: |