Perl 6是否与字典上的Python更新方法等效?

che*_*nyf 11 raku

在Python中,如果我dict用另一个名为u(Perl用作键)的字典更新字典,它将更新值:

>>> dict = {'Python':'2', 'Perl' : 5}
>>> u = {'Perl' : 6}
>>> dict.update(u)
>>> dict
{'Python': '2', 'Perl': 6}
Run Code Online (Sandbox Code Playgroud)

但是在Perl 6中:

> my %hash = 'Python' => 2, Perl => 5;
> my %u = Perl => 6
> %hash.append(%u)
{Perl => [5 6], Python => 2}
Run Code Online (Sandbox Code Playgroud)

那么,Perl 6在字典上是否具有Python的更新方法?

tim*_*imo 19

您可以使用,运算符进行更新:

my %u = Perl => 6;
my %hash = 'Python' => 2, Perl => 5;
%hash = %hash, %u;
say %hash;   # => {Perl => 6, Python => 2}
Run Code Online (Sandbox Code Playgroud)

当然,您可以缩短更新行

%hash ,= %u;
Run Code Online (Sandbox Code Playgroud)


Håk*_*and 10

在Perl 6中,一个选项是使用哈希切片:

my %u = (Perl => 6);
%hash{%u.keys} = %u.values;
Run Code Online (Sandbox Code Playgroud)

结果:

{Perl => 6, Python => 2}
Run Code Online (Sandbox Code Playgroud)