任何人都可以帮助知道如何计算否。在PERL 6中,哈希中的键是什么?寻找没有手动循环的东西。
提前致谢!
编辑:到目前为止尝试了以下但没有运气。
my %hash = 1 => "one", 2 => <21,22,23>, 3 => "three" ;
my $count = %hash.keys [ makes it a flat list ]
my $count = %hash.count [no such method]
my $count = keys %hash [provides all the keys but not the count]
答案 0 :(得分:10)
在perl5中,您可以将哈希值转换为标量,它就成了计数。你也可以在perl6中做到这一点:
%hash.Int;
# => 3
+%hash
# => 3
你也有elems方法:
%hash.elems;
# => 3
答案 1 :(得分:3)
感谢IRC Perl 6聊天社区,这是不计算的方式。散列键,具有本机/内置函数/方法。
%_Host@User> ./h.p6
Count is 3
Count is 3
%_Host@User>
%_Host@User> cat h.p6
#!/usr/bin/perl6
use v6 ;
my %hash = (1 => <1 2 3>, 2 => "ljsf", 3 => "AFDS") ;
say "Count is " ~ +%hash ;
say "Count is " ~ %hash.elems ;
%_Host@User>
感谢。
答案 2 :(得分:0)
此答案哈希在OP编辑之前发布:
您的哈希初始化存在问题
my %hash = {"1" => "one", "2" => "21,22,23", "3" => "three"} ;
应该是
my %hash = ("1" => "one", "2" => "21,22,23", "3" => "three") ;
现在回答你的实际问题,试试:
试试这个:
$count=1;
for %hash.keys.sort -> $key { #no need to sort though
# say "$key %hash{$key}";
$count++;
}
print "$count\n";