【问题标题】:Looking up list keys in a Raku set在 Raku 集中查找列表键
【发布时间】:2021-12-09 20:46:43
【问题描述】:

在 Raku 中,我可以创建一组列表:

> my $set = SetHash.new((1, 2), (3, 4, 5))
SetHash((1 2) (3 4 5))
> $set.keys.map(&WHAT)
((List) (List))

但我似乎无法检查列表键是否存在:

> $set{(1,2)}
(False False)

...因为下标中的列表被解释为切片,而不是单个键。

有没有办法查到这样的key?

【问题讨论】:

    标签: raku


    【解决方案1】:

    设置对 ValueTypes 起作用。尽管 List 可能看起来像 ValueType,但不幸的是它不是(因为虽然 List 中的元素数量是固定的,但它可能包含可变元素,因此 并不总是 一个常量)。

    这就是我几年前实现Tuple 模块的原因。这使您可以:

    use Tuple;
    my $set := SetHash.new: tuple(1,2), tuple(1,2,3);
    say $set{tuple(1,2)};  # True
    

    当然,有点冗长。您可以通过重新定义 tuple 子来缩短详细程度:

    use Tuple;
    my &t := &tuple;
    my $set := SetHash.new: t(1,2), t(1,2,3);
    say $set{t(1,2)};  # True
    

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 2022-11-02
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多