在 Raku 中连接列表
Concatenating lists in Raku
我正在寻找更简单的解决方案。
我有一个带有 相应 后缀的前缀列表和一个词根列表。
my @prefixes = 'A'..'E';
my @suffixes = 'a'..'e';
my @roots = 1, 2;
我想尽一切可能'words':A1a
,B1b
...A2a
...E2e
。
my @words;
for @roots -> $r {
for @prefixes.kv -> $i, $p {
my $s = @suffixes[$i];
my $word = [~] $p, $r, $s;
@words.push: $word;
}
}
say @words; # [A1a B1b C1c D1d E1e A2a B2b C2c D2d E2e]
我想使用 zip
或 cross
之类的东西可以更容易地做到这一点,但无法弄清楚如何...
我的解决方案是:
say @roots.map: |(@prefixes >>~>> * <<~<< @postfixes);
为 metaopping 串联创建一个 WhateverCode,滑动结果以获得最后只有标量值的 Seq
。
还有几种写法:
say @roots X[&join] (@prefixes Z @suffixes);
say @roots.map({ |(@prefixes Z @suffixes)».join($_) });
say @roots.map({ (@prefixes X~ $_) Z~ @suffixes }).flat;
say (|@prefixes xx *) Z~ (@roots X~ @suffixes);
my @formats = (@prefixes Z @suffixes).flat.map(* ~ '%s' ~ *);
say @formats X[&sprintf] @roots;
(注意:此打印顺序不同。)
say do for @roots -> $root {
|do for (@prefixes Z @suffixes) -> [$prefix, $suffix] {
$prefix ~ $root ~ $suffix
}
}
我正在寻找更简单的解决方案。
我有一个带有 相应 后缀的前缀列表和一个词根列表。
my @prefixes = 'A'..'E';
my @suffixes = 'a'..'e';
my @roots = 1, 2;
我想尽一切可能'words':A1a
,B1b
...A2a
...E2e
。
my @words;
for @roots -> $r {
for @prefixes.kv -> $i, $p {
my $s = @suffixes[$i];
my $word = [~] $p, $r, $s;
@words.push: $word;
}
}
say @words; # [A1a B1b C1c D1d E1e A2a B2b C2c D2d E2e]
我想使用 zip
或 cross
之类的东西可以更容易地做到这一点,但无法弄清楚如何...
我的解决方案是:
say @roots.map: |(@prefixes >>~>> * <<~<< @postfixes);
为 metaopping 串联创建一个 WhateverCode,滑动结果以获得最后只有标量值的 Seq
。
还有几种写法:
say @roots X[&join] (@prefixes Z @suffixes);
say @roots.map({ |(@prefixes Z @suffixes)».join($_) });
say @roots.map({ (@prefixes X~ $_) Z~ @suffixes }).flat;
say (|@prefixes xx *) Z~ (@roots X~ @suffixes);
my @formats = (@prefixes Z @suffixes).flat.map(* ~ '%s' ~ *);
say @formats X[&sprintf] @roots;
(注意:此打印顺序不同。)
say do for @roots -> $root {
|do for (@prefixes Z @suffixes) -> [$prefix, $suffix] {
$prefix ~ $root ~ $suffix
}
}