Rakudo版本2020.01
无法编译。
use v6;
class N1 {}
class T1 {}
class G1 {
has @.g is required where A1|Q1;
}
class Q1 {
has $.q is required where N1|T1|G1;
}
class A1 {
has Q1 @.a is required;
}
===SORRY!=== Error while compiling …
Illegally post-declared types:
A1 used at line 7
Q1 used at line 7
我认为仅在G1之前声明标识符会有所帮助,但这也会失败:
===SORRY!=== Error while compiling …
Too late for unit-scoped class definition;
Please use the block form.
…:6
------> class A1;⏏ class Q1;
我如何使其起作用?
可以,但是您需要将类定义为存根。
class A { }
将只定义一个空类。而:
class A { ... } # note the yadayadayada
将定义一个存根。因此添加:
class A1 { ... }
class Q1 { ... }
在代码顶部,应解决此问题。