将返回类型限制为角色参数捕获的类型

use*_*829 6 roles parameterized-types raku

Raku 中是否应执行以下操作:

my role R[::T] {
    has T $!a;
    method m ( T $v ) {
        $!a = $v;
    }
    method n ( --> T ) {
        $!a;
    }
}

my class C does R[Str] { }

my C $c = C.new;
$c.m: 'hello';
$c.n;
Run Code Online (Sandbox Code Playgroud)

运行上面的命令会出现错误:

返回值类型检查失败;期望 T 但得到 Str (“你好”)

我是否误解了参数化角色的工作原理?

Eli*_*sen 7

这实际上更多的是尚未实施的情况。

它最近由Vadim Belman实现,并将出现在下一个 Rakudo 编译器版本中(请参阅https://rakudoweekly.blog/2022/08/29/2022-35-reworkout/ “核心开发”)