在 Raku 的散列键和值上使用 any 或 none

Using any or none on the hash keys and values in Raku

我正在尝试对这样的散列的键或值使用 anynone

my %w=(a => 1, b => 2);
say %w.keys; # works
say so 'a' == %w.keys.any; # doesn't work

我已经检查了 Raku 文档的哈希和映射部分,但无法解决此问题。如何解决?谢谢

代码是这样死的:

Cannot convert string to number: base-10 number must begin with
valid digits or '.' in '⏏a' (indicated by ⏏)

发生这种情况是因为 == 是数字比较运算符,因此它在进行比较之前首先尝试将参数强制转换为数字。

哈希键 - 至少在默认情况下 - 是字符串,因此此处需要用于字符串比较的 eq 运算符:

my %w=(a => 1, b => 2);
say so 'a' eq %w.keys.any; # True

与字符串比较时使用 cmp 运算符:

say so 'a' cmp %w.keys.any;