Raku中$¢变量的作用是什么?是否具备特殊含义?
Raku中$¢变量的特殊含义
根据Raku官方文档说明,仅存在3个核心特殊词法变量:$_、$/、$!。但查看MY::伪stash时发现还存在$¢变量,且未声明该变量时直接赋值也不会触发编译器报错,执行相关代码后能正常输出值。使用版本为rakudo v2023.12,实现v6.d规范,请问$¢是否具备特殊含义?
测试代码
say MY::.hash; # ==> PseudoStash.new((!UNIT_MARKER => (!UNIT_MARKER), $! => Nil, $/ => Nil, $=finish => (Mu), $=pod => [], $?PACKAGE => (GLOBAL), $_ => (Any), $¢ => Nil, &foo => &foo, ::?PACKAGE => (GLOBAL), EXPORT => (EXPORT), GLOBALish => (GLOBAL))) sub foo {say MY::.hash} foo(); # ==> PseudoStash.new(($! => Nil, $/ => Nil, $_ => (Any), $¢ => Nil)) $¢=5; # 未声明$¢但编译器未报错 say $¢ # ==> 5
解答
$¢是Raku的预定义特殊词法变量,它是$/的别名,核心作用是存储最近一次正则表达式匹配的结果。
虽然最初可能误以为它未被官方文档收录,但实际上文档中已有相关说明。作为预定义特殊变量,它会被自动注入到所有词法作用域中(因此在MY::伪stash中能看到它的存在),无需手动声明即可直接使用,这也是直接赋值$¢=5不会触发编译错误的原因。
内容的提问来源于stack exchange,提问作者biancospino
相关产品推荐
相关产品推荐

