加入收藏 | 设为首页 | 会员中心 | 我要投稿 李大同 (https://www.lidatong.com.cn/)- 科技、建站、经验、云计算、5G、大数据,站长网!
当前位置: 首页 > 大数据 > 正文

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

发布时间:2020-12-15 23:22:50 所属栏目:大数据 来源:网络整理
导读:解释器中的参数语法似乎存在一些不一致之处.我正在使用最新的Rakudo.请参阅以下终端输出: $perl6To 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 an
解释器中的参数语法似乎存在一些不一致之处.我正在使用最新的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子例程.

相反,它声明一个名为say的statement label,然后执行语句“foo”(什么都不做).

在你的情况下它打印“foo”的唯一原因是因为你将它输入到REPL中,它自动打印每行的最后一个语句的值.

如果你在普通程序中使用它,它实际上会抛出警告在sink上下文中使用常量字符串“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

在声明了标签之后,符号在此范围内说不再引用具有该名称的内置子例程而是引用自定义标签,并且使用这样的标签是语法错误.

但是,错误消息应该理想地解释这一点.我已经submitted a Rakudo ticket了.

(编辑:李大同)

【声明】本站内容均来自网络,其相关言论仅代表作者个人观点,不代表本站立场。若无意侵犯到您的权利,请及时与联系站长删除相关内容!

    推荐文章
      热点阅读