在“正常”代码中,可以使用klass.is_a?(Reference.class)
来检查一个类是否用class
or实现struct
:
Array.is_a?(Reference.class) #=> true
Tuple.is_a?(Reference.class) #=> false
但是,我似乎无法弄清楚如何在宏中做同样的事情来重新打开所述类/结构。
例如:如果我将Array
类传递给我的宏,我需要生成以 开头的代码class Array
,而对于 aTuple
它需要是struct Tuple
.
我一遍又一遍地阅读Crystal::Macros 的文档,但我无法提出可以满足我需要并进行编译的代码。