gpt4 book ai didi

Raku vs. Perl5,一个意想不到的结果

转载 作者:行者123 更新时间:2023-12-04 04:26:11 25 4
gpt4 key购买 nike

当我在 Raku 中运行此脚本时我收到信 A有几个换行符。
为什么我不是 按预期获取连接的字符串(和 Perl5 一样)?
编辑 顺便说一句,我可以在 commaIDE 中编译吗?带有 Perl5 的文件编译器,我在哪里可以将此编译器更改为 Perl5 的编译器?

say "A";

my $string1 = "00aabb";
my $string2 = "02babe";

say join ("A", $string1, $string2);
print "\n";

my @strings = ($string1, $string2);

say join ("A", @strings);
print "\n";

最佳答案

我建议的解决方案是删除括号:

say "A";

my $string1 = "00aabb";
my $string2 = "02babe";

say join "A", $string1, $string2; # Pass THREE arguments to `join`, not ONE
print "\n";

my @strings = $string1, $string2;

say join "A", @strings;
print "\n";
(在对 @strings 的第二次调用中 join 中的元素被展平,因此其作用与对 join 的第一次调用相同。)
上面的代码显示:
A
00aabbA02babe

00aabbA02babe

When I run this script in Raku I get the letter A with several newlines.


您的代码调用 join带有一个参数,即连接器,以及要连接的零个字符串。所以 join调用生成空字符串。因此你会得到空行。

Why do I not get the concatenated strings


两人 say join...代码中的语句只打印换行符,因为它们就像第三个和第四个 say下面几行:
say join(  " \o/ ", "one?", "two?" ); # one? \o/ two?␤

say join " \o/ ", "one?", "two?" ; # one? \o/ two?␤

say join ( " \o/ ", "one?", "two?" ); # ␤

say join( " \o/ one? two?" ); # ␤
上面的第一行和第二行将三个字符串传递给 join .第三次传单 List 然后被强制成为单个字符串(使用单个空格字符连接的 List 的元素的串联),即与第四行相同的结果。
my @strings = ($string1, $string2);咒语恰好按您的预期工作,因为对 = 左侧的“复数”变量赋值。将迭代右侧的值或值列表。
但是在 Raku 中避免冗余代码是一个好习惯,在这种情况下,只有在您真的必须使用括号来表达与没有它们的代码不同的东西时才使用括号。这是 Raku 中使代码高信号、低噪声的一般原则。对于您的代码,所有括号都是多余的。

关于Raku vs. Perl5,一个意想不到的结果,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/67778486/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com