(标识符)项vs.常量vs.空签名例程

jjm*_*elo 4 perl6

标识符术语在文档中与常量一起定义,使用情况几乎相同,尽管术语在运行时计算其值,而常量在编译时获取。可能会使术语使用全局变量,但这是遥不可及的,因此我想这不是它们的用例。OTOH,它们可能只是带有空签名的例程:

sub term:<þor> { "Is mighty" }
sub Þor { "Is mighty" }

say þor, Þor;
Run Code Online (Sandbox Code Playgroud)

但是您已经可以使用空签名定义例程。但是,可以编写以下错误:

say Þor ~ Þor;
Run Code Online (Sandbox Code Playgroud)

与术语不同,它将产生一个many positionals passed; expected 0 arguments but got 1。但是,这似乎有些牵强,您可以通过在末尾添加()来节省麻烦。

另一个可能的用例是违反普通标识符的规则

sub term:<?> { True }
say ?; # True
Run Code Online (Sandbox Code Playgroud)

我还有其他用例吗?

tim*_*imo 5

将零参数的subs用作术语可以消除后声明subs的可能性,因为在解析了subs的用法后找到sub会要求重新解析早期的代码(perl 6语言拒绝这样做,“ one-pass解析”和所有其他内容)(如果该子项不带任何参数)。