声明器块可以用于变量声明吗?

Jim*_*ger 4 comments raku pod6

当我运行raku --doc test.raku以下代码时:

#! /usr/bin/env raku
use v6.d;

#| The answer
my Int $bar = 42;
#= Thank you, Douglas

say $bar.WHY.leading;
say $bar.WHY.following;
Run Code Online (Sandbox Code Playgroud)

我没有得到任何输出。当我运行代码(raku test.raku)时,输出是:

Nil
Nil
Run Code Online (Sandbox Code Playgroud)

有没有办法将声明器块与变量一起使用?

Jon*_*ton 6

在任何地方放置声明符注释在语法上都是有效的;人们甚至可以将其写在一份声明中:

#| Look, a statement
say "hello";
Run Code Online (Sandbox Code Playgroud)

Rakudo 目前仅将文档附加到包、属性、例程和参数,因为它们具有元对象,可以附加文档。

相比之下,Comma IDE 还跟踪变量的文档注释,并可以在变量的使用站点显示它们:

逗号变量声明示例

然而,跟踪它们的 IDE 与使它们在运行时可用的 Rakudo 实现有很大不同。

如果声明符注释适用于变量,几乎可以肯定必须这样写:

say $bar.VAR.WHY.leading;
Run Code Online (Sandbox Code Playgroud)

因为否则人们会谈论变量Scalar的内容,而不是(或ArrayHash) 容器本身。即使如此,如果有一个绑定:

#| The answer
my Int $bar := 42;
Run Code Online (Sandbox Code Playgroud)

然后没有容器可以附加文档,因此无法在运行时访问它。

即将推出的 RakuAST(Raku 代码的标准化文档对象模型)将允许提供对附加到任何内容的声明器文档的访问(尽管目前还没有);这仍然不会提供对文档的运行时访问,但它会为工具提供一种解析和提取文档的方法。