gpt4 book ai didi

perl - 为什么可以在 boolean 上下文中评估 `defined $x && $x`?

转载 作者:行者123 更新时间:2023-12-01 05:27:28 25 4
gpt4 key购买 nike

my $target_type = (defined($item->{target_type}) && $item->{target_type}) 
? $item->{target_type}
: "";

my $target_id = (defined($item->{target_id}) && $item->{target_id})
? $item->{target_id}
: "";

开发者为什么用 &&在几乎相同的条件下?

最佳答案

显然他是腰带和吊带类型。 (defined($x) && $x) 几乎等于 $x ,因为 undef 是假的。 (不同之处在于,如果 $xundef,那么 (defined($x) && $x) 将是 Perl 的特殊假值,它是定义的,但在这种情况下没有区别。)可能曾经有一个不同的条件(例如 $x > 0 需要 x145)以避免有关未初始化值的警告。然后有人删除了该条件,并没有想到删除现在不必要的 defined

使用 defined (如 onon15 points out )的另一个原因是向 future 的维护程序员强调 (defined($x) && $x) 可能未定义。就个人而言,我会为此使用评论,但 TIMTOWTDI

关于perl - 为什么可以在 boolean 上下文中评估 `defined $x && $x`?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/12419036/

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