如何获得没有的数量。 perl 6%HASH中的按键?

时间:2017-02-13 09:41:24

标签: hash count perl6

任何人都可以帮助知道如何计算否。在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]

3 个答案:

答案 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";