Karma oluşturduğum bu programı düşünün. Bunun gibiBu içerik, bu Perl 6 zip operatörünü karıştırıyor?
my $hash = %(
wallet => 100,
gave => 0,
received => 0,
);
for ^1 { $hash<wallet gave> Z+= <-1 1> };
dd $hash;
, for
son satır bir şey yapmaz ve hiçbir uyarı vardır: O zaman içinde iki değerlerini değiştirmek istiyorum. karma değişmez: inplace düzenleme şeyi yapar, ama ben buldum ben "yararsız" itiraz rağmen bir uyarı (var Şimdi
my $hash = %(
wallet => 100,
gave => 0,
received => 0,
);
for ^1 { $hash<wallet gave> Z+= <-1 1>; True };
dd $hash;
:
Hash $hash = ${:gave(0), :received(0), :wallet(100)}
başka bir ifade eklenmesi davranışını değiştirir bunun için bir kullanım): Ben de aynı şey olmalı Z+=
olmadan yaparsanız
Useless use of constant value True in sink context
Hash $hash = ${:gave(1), :received(0), :wallet(99)}
, çalışır:
my $hash = %(
wallet => 100,
gave => 0,
received => 0,
);
for ^1 { $hash<wallet gave> = $hash<wallet gave> Z+ <-1 1> }
dd $hash;
Yine sağ çıkışı:
Hash $hash = ${:gave(1), :received(0), :wallet(99)}
'dan itibaren bu bir hataya benziyor. Muhtemelen bir battaniye içeriği ele alma hatası.^1 için {sink $ hash Z + = <-1 1>}; 'veya'^için {demek $ hash Z + = <-1 1>}; 'her ikisi de doğru sonuçları verir. –
raiph
Oraya lavaboya atmayı denedim ve işe yaradığını gördüm. Garip. –
FWIW, Rakudo Perl 6'nın hangi versiyonunu kullanıyorsunuz? Oldukça yakın zamanda sabitlenmekte olan bir 'for' döngüsündeki son değeri batırma konusunda bir hata hatırlıyorum. –