"Illegally post-declared types" 循环 class 定义
"Illegally post-declared types" with circular class definition
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;
如何让它发挥作用?
可以,但是您需要将 classes 定义为存根。
class A { }
将只定义一个空 class。鉴于:
class A { ... } # note the yadayadayada
将定义一个存根。所以添加:
class A1 { ... }
class Q1 { ... }
到您代码的顶部,应该可以解决问题。
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;
如何让它发挥作用?
可以,但是您需要将 classes 定义为存根。
class A { }
将只定义一个空 class。鉴于:
class A { ... } # note the yadayadayada
将定义一个存根。所以添加:
class A1 { ... }
class Q1 { ... }
到您代码的顶部,应该可以解决问题。