小编Art*_*nek的帖子

在运行时访问函数源代码的宏

使用 Scala 宏,我想访问函数 f 的源代码。

这是我的问题的简化示例:

def logFImplementation(f: => Boolean) {
    val sourceCodeOfF: String = ... // <-- how to get source code of f??

    println("Scala source of f=" + sourceCodeOfF)
}
Run Code Online (Sandbox Code Playgroud)

因此对于:

logFImplementation { val i = 5; List(1, 2, 3); true }
Run Code Online (Sandbox Code Playgroud)

它应该打印:

Scala source of f=val i: Int = 5; immutable.this.List.apply[Int](1, 2, 3); true
Run Code Online (Sandbox Code Playgroud)

(现在我测试了宏以在运行时访问源代码文本,它非常有用,{ val i = 5; List(1, 2, 3); true }.logValueImplf.logValueImpl它只是打印f.)

感谢您的任何建议。

reflection macros scala scala-macros

5
推荐指数
2
解决办法
892
查看次数

标签 统计

macros ×1

reflection ×1

scala ×1

scala-macros ×1