我很好奇grammars是类还是单例,因此我创建了这个小程序来找出:
grammar Mini {
token TOP { \* <word> \* }
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
实际上是一个类。总的来说,找到这种方法的方法会更短吗?还是不需要知道包可能是实例的实际类的方法?
答案 0 :(得分:7)
您可以通过DEFINITE来消除“实例”和“类”的歧义,即
Mini.DEFINITE ?? 'Object' !! 'Class'
或更确切地说
Mini.DEFINITE ?? 'concrete object' !! 'type object'
应该可以解决问题。