在raku中存在:意外失败

问题描述 投票:1回答:1

在尝试调试程序代码时,我遇到了以下问题:

(base) hsmyers@BigIron:~$ rlwrap -A raku

To exit type 'exit' or '^D'
> my regex N { <[A..G]> };
regex N { <[A..G]> }
> my %h = A => 1, B => 2;
{A => 1, B => 2}
> 'B' ∈ %h.keys
True
> my $m = 'B' ~~ / <N> /;
「B」
 N => 「B」
> $m ∈ %h.keys
False
> $m.Str ∈ %h.keys
True
> my $n = $m.Str
B
> $n ∈ %h.keys
True
> %h<B>:exists
True
> %h<$n>:exists
False
>

总之,问题是如何从匹配对象到字符串,以便%whatever:exists起作用。 “键元素”提供了一种解决方法,但我认为这不是检查键是否存在的正确方法吗?

hash key exists raku
1个回答
0
投票

您通过使用〜将匹配项放在Str上下文中,但我认为问题在于您在变量中使用文字引号<>。 %h返回与文字键$ n对应的值。您需要使用%h {$ n}来检索与$n的内容相对应的值。另外,如果$ n包含Match,它将放在Str上下文中,因此应该可以使用。

© www.soinside.com 2019 - 2024. All rights reserved.