Ren*_*ger 7 perl associative-array
如果perl-hash声明如下:
use warnings;
use strict;
my %h;
Run Code Online (Sandbox Code Playgroud)
然后,我可以检查此哈希中是否存在密钥exists
:
if (exists $h{k3}) {
print "k3 exists\n";
}
else {
print "k3 doesn't exist\n";
}
Run Code Online (Sandbox Code Playgroud)
由于k3
不存在,脚本打印k3 doesn't exist
.
我还可以检查是否存在ka
在k3
:
if (exists $h{k3}{ka}) {
print "k3 ka exists\n";
}
else {
print "k3 ka doesn't exist\n";
}
Run Code Online (Sandbox Code Playgroud)
不幸的是,这创造了关键k3
,所以另一个
if (exists $h{k3}) {
print "k3 exists\n";
}
else {
print "k3 doesn't exist\n";
}
Run Code Online (Sandbox Code Playgroud)
现在打印k3 exists
.
这对我的目的来说有点不幸.我宁愿不想让perl创建k3
密钥.
我可以,当然,检查ka
范围内k3
的东西,如
if (exists $h{k3} and exists $h{k3}{ka})
Run Code Online (Sandbox Code Playgroud)
这不会创建密钥k3
.但我想知道是否有一种更短(更清洁)的方式来检查ka
内部k3
.
编辑问题被标记为重复.不幸的是,提到的问题中唯一的答案是提到no autovivification
那里只有一个赞成,并没有被标记为已接受的答案.就我的目的而言,这no autovification
是我需要知道的特征(并且我在不知不觉之后).所以,我在这里留下我的问题,因为我认为在另一个问题中接受的答案不是最佳答案.
不幸的是,到目前为止还没有人回答no autovification
我想接受的内容.因此,我可以回答我自己的问题.
小智 2
最简单的事情是嵌套你的 if:
if (exists $h{k3}) {
print "k3 exists\n";
if (exists $h{k3}{ka}) {
print "k3 ka exists\n";
}
else {
print "k3 ka doesn't exist\n";
}
}
else {
print "k3 doesn't exist\n";
}
Run Code Online (Sandbox Code Playgroud)
归档时间: |
|
查看次数: |
155 次 |
最近记录: |