相关疑难解决方法(0)

Perl的"not"运算符没有使用defined()函数按预期工作

以下代码段未按预期工作:

$k{"foo"}=1;
$k{"bar"}=2; 
if(not defined($k{"foo"}) && not defined($k{"bar"})){
    print "Not defined\n";
}
else{
    print "Defined"
}
Run Code Online (Sandbox Code Playgroud)

由于$ k {"foo"}和$ k {"bar"}都已定义,因此预期输出为"已定义".但是,运行代码会返回"未定义".

现在,玩弄代码我意识到在每个not defined()调用周围放置括号会产生所需的结果:

if((not defined($k{"foo"})) && (not defined($k{"bar"}))){print "Not Defined"}
Run Code Online (Sandbox Code Playgroud)

我想这与运算符优先级有关,但有人可以解释究竟发生了什么吗?

perl

9
推荐指数
1
解决办法
2万
查看次数

标签 统计

perl ×1