【发布时间】:2016-07-11 09:48:51
【问题描述】:
我的 Scala 断言库需要 Scala 宏(reify、quasiquote、macro impl)。
我希望能够做到这一点:
object1.assertEquals(object2) // success: object1 = object2
或者像这样:
3.assertEquals(1 + 1) // failure: 1 + 1 /= 3
可以在隐式类中定义 Scala 宏吗?
【问题讨论】:
-
是的,def 宏只是一个方法调用。您在应用程序中看到的前缀看起来会有所不同。
-
@som-snytt - “您在应用程序中看到的前缀看起来会有所不同”是什么意思?
-
@som-snytt - 如果我希望将对象本身“this”传递到宏中,我是否只需执行 q"$this" 并将其用作树,就像另一个一样树?
-
Context.prefix树不是object1而是myimplicit(object1)。毫无疑问有更好的例子,但github.com/som-snytt/regextractor/blob/master/util/src/main/…
标签: scala macros scala-macros scala-quasiquotes reify