gpt4 book ai didi

whitespace - Perl 6 中哪些空间很重要?

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

Perl 6 清除了其前身中的一些奇怪情况,不允许在某些地方使用空格,但在其他地方也执行工作。空间在哪里重要?有一个完整的引用会很好,因此我添加了一个社区 wiki 答案,我会用你的代表答案来更新。示例赞赏!

但是,还要记住 Perl 6 有 unspace ,因此您可以使用 \使空白有效地不可见。例如,您不应该将子例程名称及其参数列表显示出来,但是使用 unspace 您可以:

sub-name    ( @arguments );  # not okay
sub-name\ ( @arguments ); # okay

最佳答案

空格防止各种配对符号(例如 {}()<> )被解释为后缀运算符

哈希构造

> my %a = (A=>1, B=>2, C=>3);
{A => 1, B => 2, C => 3}
> %a<A>;
1
> %a <A>;
===SORRY!=== Error while compiling:
Missing required term after infix
------> %a <A>⏏;
expecting any of:
prefix
term
> %a\ <A>;
1

同样,插值被空格破坏,我不知道在插值环境中使用 unspace 的方法。但是你可以在打开后引入空间 {使用时 {}插入代码的结果:
> put "%a<A>";
1
> put "%a <A>";
%a <A>
> put "%a\ <A>";
%a <A>
> put "%a {'A'}"
%a A
> put "%a{<A>}"
1
> put "%a{ <A> }"
1

循环块

这个循环适用于 Perl 5,但不适用于 Perl 6:
for (1,2,3){
print "counting $_!\n";
}

===SORRY!=== Error while compiling testing.p6
Missing block (whitespace needed before curlies taken as a hash subscript?)
at testing.p6:4
------> <BOL>⏏<EOL>
expecting any of:
block or pointy block


但是右括号后的空格更正了这一点:
for (1,2,3) {
print "counting $_!\n";
}

counting 1!
counting 2!
counting 3!


这曾经一直困扰着我,直到我了解到控制流构造的条件通常不需要括号(例如 forwhileif 构造)。

为避免这种情况,只需省略括号:
for 1,2,3 {
print "counting $_!\n";
}

但是你还是要在大括号前留出空间:
for 1,2,3{
print "counting $_!\n";
}

===SORRY!=== Error while compiling testing.p6
Missing block (whitespace needed before curlies taken as a hash subscript?)
at testing.p6:4
------> <BOL>⏏<EOL>
expecting any of:
block or pointy block

关于whitespace - Perl 6 中哪些空间很重要?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/45450369/

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