解释器中的Perl 6函数参数语法(REPL)
解释器中的参数语法似乎存在一些不一致之处.我正在使用最新的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子例程. 相反,它声明一个名为say的statement label,然后执行语句“foo”(什么都不做). 在你的情况下它打印“foo”的唯一原因是因为你将它输入到REPL中,它自动打印每行的最后一个语句的值. 如果你在普通程序中使用它,它实际上会抛出警告在sink上下文中使用常量字符串“foo”.
在声明了标签之后,符号在此范围内说不再引用具有该名称的内置子例程而是引用自定义标签,并且使用这样的标签是语法错误. 但是,错误消息应该理想地解释这一点.我已经submitted a Rakudo ticket了. (编辑:李大同) 【声明】本站内容均来自网络,其相关言论仅代表作者个人观点,不代表本站立场。若无意侵犯到您的权利,请及时与联系站长删除相关内容! |