我很好奇语法是班级或单身,所以我创建了这个小程序来找出:
grammar Mini {
token TOP { \* \* }
token word { \w+ }
}
proto sub is-class( | ) { * };
multi sub is-class( Grammar:D $g ) { return "Object" };
multi sub is-class( Grammar:U $g ) { return "Class" };
say is-class( Mini );
这使用多个调度来找出它,事实证明它Mini
实际上是一个类.总的来说,有没有更短的方法来找到它?或者一种不需要知道包可能是实例的实际类的方法?
您可以通过DEFINITE消除'实例'和'类'的歧义,即
Mini.DEFINITE ?? 'Object' !! 'Class'
更确切地说
Mini.DEFINITE ?? 'concrete object' !! 'type object'
应该做的伎俩.