【发布时间】:2017-09-23 22:44:52
【问题描述】:
我现在正在为我的函数实现某种模拟。我这里有个小问题。根据情况,我可以获得不同类型的 json 以及不同类型的哈希。它可以是具有空键值的简单散列,也可以是具有空值或非空值的散列数组的散列。
my %ch1 = (
"a" => "",
"b" => "",
"c" => ""
);
my %ch2 = (
"tab" => [
{
"a" => 11,
"b" => 22,
"c" => 33
},
{
"a" => 44,
"b" => 55,
"c" => 66
}
]
);
我需要创建一个函数来检查这两种类型的哈希,计算空值并与哈希键的数量进行比较。
这有点适用于第一个哈希,但我不知道如何使它适用于两个哈希而无需硬编码。
my $tck = 0;
for (keys %ch1){
if ($ch1{$_} eq ""){
print "'$ch1{$_}'\n";
$tck++;
}
}
if ($tck == scalar keys %ch1){
# do something
}
有什么建议吗?
【问题讨论】:
-
第二种的结构总是这样吗?您是要检查该结构中的每个散列,包括顶层,还是只检查数组 ref 中的散列?
-
用一个函数处理不同类型的数据似乎很奇怪。但是,在不了解更多上下文的情况下,很难给出适当的建议。规范化数据结构是正确的答案吗?或者,编写不同的函数来处理不同的数据结构更好吗?只有更好地了解围绕这个问题的背景,才能给出这些问题和类似问题的答案。
-
将近 100 个字要说“我不知道”?