s-6ren">
gpt4 book ai didi

function - 解释器中的 Perl 6 函数参数语法 (REPL)

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

解释器中的参数语法似乎有些不一致。我正在使用最新的 Rakudo。请查看以下终端输出:

$ perl6
To exit type 'exit' or '^D'
> say: "foo"
foo
> say("foo")
foo
> say "foo"
===SORRY!=== Error while compiling:
Two terms in a row
------> say⏏ "foo"
expecting any of:
infix
infix stopper
statement end
statement modifier
statement modifier loop
>
$ perl6
To exit type 'exit' or '^D'
> say "foo"
foo
> say("foo")
foo
> say: "foo"
foo
> say "foo"
===SORRY!=== Error while compiling:
Two terms in a row
------> say⏏ "foo"
expecting any of:
infix
infix stopper
statement end
statement modifier
statement modifier loop
>
$

似乎在你使用“ :”或“ ()”来提供参数之后,你不能再回去使用“ ”,即空格来提供参数。

还是我错过了什么?

谢谢 !!!

lisprog

最佳答案

say: "foo"



那行是 不是 调用 say子程序。

相反,它声明了 statement label名称为 say ,然后执行语句 "foo" (什么都不做)。

它打印的唯一原因 "foo"在您的情况下,是因为您将它输入到 REPL 中,它会自动打印每行最后一条语句的值。

如果你在普通程序中使用它,它实际上会抛出警告 Useless use of constant string "foo" in sink context。 .

say "foo"
===SORRY!=== Error while compiling:
Two terms in a row
------> say⏏ "foo"
expecting any of:
infix
infix stopper
statement end
statement modifier
statement modifier loop



声明标签后,符号 say在此范围内不再指代具有该名称的内置子例程,而是指您的自定义标签,使用这样的标签是语法错误。

不过,错误消息应该理想地解释这一点。我有 submitted a Rakudo ticket为了那个原因。

关于function - 解释器中的 Perl 6 函数参数语法 (REPL),我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/45109416/

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