更新
@ralph嗯,这是2年前的问题了,但是由于我有同样的需求
__LINE__,
__FILE__而您提到了SCALA;这是我使用Scala宏(从
v2.10.0-RC1开始 )的一些想法。
def $currentPosition:String = macro _currentPosition;def _currentPosition(c:Context):c.Expr[String]={ import c.universe._; val pos = c.enclosingPosition; c.Expr(Literal(Constant( s"${pos.source.path}: line ${pos.line}, column ${pos.column}" )))}在被评价的宏 编译时 ,
$currentPosition被替换为描述其在源代码位置的文字串。例如,
println在第13行放一个,它显示:
/sandbox/tmp_juno_workspace2/LogMacro_Test/src/test/Trial.scala: line 13, column 15
我没有广泛地使用这些机制,但是通过进行调整,可以开发他需要的日志记录功能(我应该补充一点,编写宏可能很困难-对我来说!)。



