0
沒有與此簽名創建背後隱含參數的方法:如何從Scala宏中使用Predef.implicitly?
class A {
def test[T: ClassTag](t: T) = println(t)
}
val a = new A
a.test(123456)
所以隱含參數應提供方法test
的召喚。當我做了具體化在REPL,呼叫樹是這個樣子:
Apply(
Apply(
Select(
Select(
newTermName("a"),
newTermName("test")
),
List(
Literal(Constant(123456))) // explicit method args
),
List(
Select(This(newTypeName("Predef")),
newTermName("implicitly"))) // implicit args
)
)
我試圖讓使用宏實現此調用,但這不會編譯,給我:PREDEF不是一個封閉類。我嘗試了不同的事情,但沒有找到任何成功的例子。
所以問題是:如何爲使用宏的方法提供隱式參數?
謝謝,這是行之有效的。我知道quasiquotes,但試圖最小化依賴並更深入地瞭解發生了什麼。所有這些宏觀的東西都很棒。謝謝! –