gpt4 book ai didi

Perl - 三元运算符中的增量值

转载 作者:行者123 更新时间:2023-12-02 01:55:53 25 4
gpt4 key购买 nike

我只是想在 test() 子例程返回 true 时在三元运算符的“true”部分中增加一个值,但在返回 false 时将其设置回零。

我不明白为什么下面的代码不起作用:

use warnings;
use strict;

my $int = 5;

test() ? $int += 1 : $int = 0;

print "$int\n"; # => prints "0"

sub test {
return 1; #return true
}

最佳答案

答案相当简单:perl 的 ternary operator是可分配的

特别是,您的代码的真正含义是:

(test() ? $int += 1 : $int) = 0;

您可能还记得,赋值的结果是被赋值的变量;这意味着会发生以下情况:

  1. test() 计算结果为真
  2. 计算 $int += 1,将 $int 递增到 6
  3. 赋值结果$int赋值0

此代码将按您希望的方式工作:

test() ? ($int++) : ($int = 0);

或者这个:

$int += test() ? 1 : -$int; #If you want to be cute

关于Perl - 三元运算符中的增量值,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/20083718/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com