小编Dav*_*man的帖子

在单个语句(Perl 5与Perl 6)中进行后增量和变量重用

我天真地想在Perl 6和Perl 5之间进行相当多的字面上的翻译,实际上却没有,因为后增量变量的处理方式不同。

Perl 6产生了理想的结果,即幻方:[[8,1,6],[3,5,7],[4,9,2]]

my @sq; my $n = 3; my $i = 1; my $x = $n/2; my $y = 0;
@sq[($i%$n ?? $y-- !! $y++) % $n][($i%$n ?? $x++ !! $x) % $n] = $i++ for 0..$n**2 - 1;
say join ' ', $_ for @sq;
Run Code Online (Sandbox Code Playgroud)

Perl 5中的“相同”代码不:[[8,1,3],[9,5,7],[4,6,2]]

$n = 3; $i = 1; $x = $n/2; $y = 0;
$sq[($i%$n ? $y-- : $y++) % $n][($i%$n ? $x++ : $x) % $n] = $i++ for 0..$n**2 …
Run Code Online (Sandbox Code Playgroud)

perl perl6 undefined-behavior sequence-points raku

9
推荐指数
2
解决办法
192
查看次数

标签 统计

perl ×1

perl6 ×1

raku ×1

sequence-points ×1

undefined-behavior ×1