我可以写这样的东西(elem这是一个XML::Element,但这并不重要):
for $elem.nodes {
when XML::Element { ... }
when XML::Text { ... }
...
default { note qq{Ignoring unknown XML node "$_".} }
}
Run Code Online (Sandbox Code Playgroud)
$_看起来不错,但没有给我使用它的代码内部的可读名称,这就是为什么我更喜欢这样写:
for $elem.nodes -> $child {
when XML::Element { ... }
when XML::Text { ... }
...
default { note qq{Ignoring unknown XML node "$child".} }
}
Run Code Online (Sandbox Code Playgroud)
但这不起作用,因为现在还$_没有设置,所以我实际上需要写
for $elem.nodes -> $child {
given $child {
when XML::Element { ... }
when XML::Text { ... }
...
default { note qq{Ignoring unknown XML node "$child".} }
}
}
Run Code Online (Sandbox Code Playgroud)
这有点多余,并且增加了额外的缩进级别。
这绝对不是世界末日,但我是否缺少一些简单的方法来获得可读的变量名并避免given?
您可以将变量绑定在when语句上方,它有点难看,但它可以完成工作。
for $elem.nodes {
my $child = $_;
when XML::Element { say 'I am XML!' }
when XML::Text { say 'I am text!' }
default { say "I am default: $child" }
}
Run Code Online (Sandbox Code Playgroud)
编辑:在 Raku 中,我认为坚持使用$_“观看”是完全合理的,因为“观看”的想法$_已经存在相当长一段时间了。
for @a -> $x { {
when 2 { say "$x ... a" }
when 4 { say "$x ... b" }
} given $x }
Run Code Online (Sandbox Code Playgroud)
顽皮的双卷发和后发?
| 归档时间: |
|
| 查看次数: |
252 次 |
| 最近记录: |