一个人可以通过ASTNode#line_number
和其他方法来获取ASTNode的位置。
但是问题是,可以获取宏参数的ASTNode而不是宏本身。未定义宏中的self
之类的内容。这个问题可能是“如何获取宏本身而不是参数的ASTNode”,但我想这是不可能的。
但是即使对于参数的位置,有些也只返回nil
而什么也没有:
macro xx(**args)
{% p args.line_number %} # => nil
end
xx a: 123
您会发现#line_number
,#filename
,所有其他位置字段对于nil
和NamedTupleLiteral
都是TupleLiteral
。这意味着像xx
这样的宏永远无法获取代码位置?或者,这只是我想念的东西?
非常感谢。