作者热门文章
- html - 出于某种原因,IE8 对我的 Sass 文件中继承的 html5 CSS 不友好?
- JMeter 在响应断言中使用 span 标签的问题
- html - 在 :hover and :active? 上具有不同效果的 CSS 动画
- html - 相对于居中的 html 内容固定的 CSS 重复背景?
当我在 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 letterA
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 vs. Perl5,一个意想不到的结果,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/67778486/
我是一名优秀的程序员,十分优秀!