能否在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
相关产品推荐
相关产品推荐

