You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

能否在Raku变量声明中使用Declarator Blocks?

Raku变量使用Declarator Blocks的解决方案

Raku的#|/#=这类Declarator Blocks文档注释,默认仅支持例程(sub、method)、类、模块等声明器,普通独立变量(my/our声明的)并不支持通过这种方式关联文档,这就是你执行raku --doc无输出、$bar.WHY返回Nil的原因。

不过可以通过两种方式实现类似需求:

1. 手动绑定变量的WHY属性 + POD块标记文档

如果需要同时让raku --doc识别文档,且代码内可访问变量的注释内容,可以结合POD块和手动绑定WHY属性:

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

=begin pod
=head1 变量说明
=item C<$bar>
The answer
Thank you, Douglas
=end pod

my Int $bar = 42;

# 手动为变量绑定文档内容
$bar.WHY = Pod::Block::Declarator.new(
    :name<$bar>,
    :leading("The answer"),
    :following("Thank you, Douglas")
);

say $bar.WHY.leading;  # 输出: The answer
say $bar.WHY.following;# 输出: Thank you, Douglas

执行raku --doc test.raku时会输出POD块中的变量文档,运行代码也能正常获取注释内容。

2. 将变量转为类属性

类的属性(has声明)支持使用#|/#= Declarator Blocks,既能被raku --doc识别,也能通过WHY访问:

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

class Answer {
    #| The answer
    has Int $.bar = 42;
    #= Thank you, Douglas
}

my $ans = Answer.new;
say $ans.bar.WHY.leading;  # 输出: The answer
say $ans.bar.WHY.following;# 输出: Thank you, Douglas

执行raku --doc test.raku会生成类和属性的文档,代码内也能直接通过WHY获取注释。

内容的提问来源于stack exchange,提问作者Jim Bollinger

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.08.01 03:41:28