如何在不伴随装箱(即逐项化)的情况下将值分配给哈希键?

2024-04-01

来自(哪里这个问题 https://stackoverflow.com/questions/65456629/assignment-to-a-list-container-confusion,我想有一个List(或者一般来说是非标量的东西)作为分配给哈希键的值,这样:

my %syns-by-name does Associative[Str,List] = Bq => ("Bq", "becquerel", "becquerels");
my Str  @syns = %syns-by-name<Bq>;

然而,这是行不通的。列表在分配之前会逐项列出,因此值始终是标量。您需要采取解决方法才能真正使这项工作正常进行:

my %syns-by-name does Associative[Str,List] = Bq => ("Bq", "becquerel", "becquerels");

my @list := <C coulomb coulombs>;
%syns-by-name<C> := @list;

my Str  @syns = %syns-by-name<C>;
say @syns;

这将返回我们正在寻找的内容,一个列表。但是,我们如何直接在作业上做到这一点并说服列表是列表而不是逐项列表?


假设您之后不需要突变,请使用Map代替Hash.

my %syns-by-name is Map = Bq => ("Bq", "becquerel", "becquerels");
my Str @syns = %syns-by-name<Bq>;
say @syns; # [Bq becquerel becquerels]

由于不期望 a 中的条目Map是可分配的,它不会创建Scalar值的容器。

本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)

如何在不伴随装箱(即逐项化)的情况下将值分配给哈希键? 的相关文章

随机推荐