gpt4 book ai didi

if-statement - 字 'if' 解释为 'if()' 函数调用。 parent 不允许

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

所以我发现在 Perl 6 中写一个带括号的 if 语句会导致它向我抛出这个错误:

===SORRY!===
Word 'if' interpreted as 'if()' function call; please use whitespace instead of parens
at C:/test.p6:8
------> if<HERE>(True) {
Unexpected block in infix position (two terms in a row)
at C:/test.p6:8
------> if(True)<HERE> {

这让我假设存在某种 if() 函数?但是,创建并运行一个包含 if(); 的脚本会产生以下编译器错误:

===SORRY!===
Undeclared routine:
if used at line 15

那么,这是怎么回事?

我在这里阅读https://en.wikibooks.org/wiki/Perl_6_Programming/Control_Structures#if.2Funless parens 是可选的,但对我来说似乎并非如此。

我的 if 语句在没有括号的情况下也能正常工作,只是想知道为什么它会阻止我使用它们或者为什么它会因为它们而认为 if 是一个子例程。

编辑: 好吧,我是不是有点傻……看起来我对我链接的链接的阅读不够好,我认为这就是您感到困惑的原因。我链接的链接指出了以下内容,这基本上就是我要问的内容:

if($x > 5) {   # Calls subroutine "if"
}

if ($x > 5) { # An if conditional
}

我接受了以下答案,因为它确实提供了一些见解。

最佳答案

您确定您创建了一个名为“if”的子项吗?如果是这样,(没有双关语意),如果你在文字“if”之后使用空格,你会得到关键字,否则如果你在文字“if”之后使用括号,你会得到你预先声明的函数 - 即如果你使用该术语看起来像一个函数调用 - 你已经声明了这样一个函数 - 它会调用它;

use@localhost:~$ perl6
> sub if(Str $s) { say "if sub says: arg = $s" };
sub if (Str $s) { #`(Sub|95001528) ... }
> if "Hello World";
===SORRY!=== Error while compiling <unknown file>
Missing block
at <unknown file>:1
------> if "Hello World"⏏;
expecting any of:
block or pointy block
> if("Hello World");
if sub says: arg = Hello World
>
> if 12 < 16 { say "Excellent!" }
Excellent!
>

你可以在上面看到,我已经声明了一个名为“if”的函数。

if "Hello World";错误,因为空格意味着我正在使用关键字,因此我们在尝试使用 if 关键字时遇到语法错误。

if("Hello World")成功调用预先声明的函数。

if 12 < 18 { say "Excellent!" }工作正常,因为空格表示“if”被解释为关键字,这次没有语法错误。

再说一次,您确定您有(或者更好 - 您可以粘贴在这里)您预先声明的“if”函数吗?

关键字和空格的引用(同时使用关键字“if”作为示例!)在此处:SO2 - Keywords and whitespace

关于if-statement - 字 'if' 解释为 'if()' 函数调用。 parent 不允许,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/35450184/

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