【发布时间】:2020-07-01 09:55:20
【问题描述】:
我想测试签名中第一个对象的类型。以下显示了我发现该工作的一些方法。但是为什么对类型(以下 3 个测试中的第 2 个)的智能匹配不起作用? 有没有比对 Type 等价的字符串进行字符串化和测试更好的方法? (以下是我正在处理的用例)
raku -e "sub a( |c ) { say so |c[0].WHAT.raku ~~ /'Rat'/, so |c[0].WHAT ~~ Rat, so |c[0].^name ~~ /'Rat'/ };a(3/2);a(2)"
TrueFalseTrue
FalseFalseFalse
# OUTPUT:
#TrueFalseTrue
#FalseFalseFalse
我正在写一个proto sub handle,大多数潜艇都有类似的签名,例如。 multi sub handle( Pod $node, MyObj $p, Int $level --> Str)
所以大多数多潜艇根据 $node 中的内容做不同的事情。但是,当使用Nil 或纯字符串调用handle 时,如何处理这些情况。我正在考虑类似的事情
proto handle(|c) {
if |c[0].^name ~~ /'Str'/ { # code for string }
else { {*} }
}
【问题讨论】:
-
proto foo(| [$first, |]) { say $first.perl; {*}; },或者更清楚的是没有匿名捕获为proto foo(|all [$first, |rest]) { say $first.perl; {*}; }
标签: raku introspection