1
我試圖總結劇中JSON寫入宏擴展包宏擴展方法
def encoder[T] = Json.writes[T]
但T
是未知的,這樣就不會編譯,它抱怨
no unapply method found
我知道我可以用JsMacroImpl.reads
擴展代替Json.writes[T]
。 有沒有更好的方法來做到這一點?
我試圖總結劇中JSON寫入宏擴展包宏擴展方法
def encoder[T] = Json.writes[T]
但T
是未知的,這樣就不會編譯,它抱怨
no unapply method found
我知道我可以用JsMacroImpl.reads
擴展代替Json.writes[T]
。 有沒有更好的方法來做到這一點?
我在一段時間後面臨類似的問題。你可以做這樣的事情。
創建一個對象,並在裏面編寫編碼器方法作爲宏的方法。
object SomeObj {
def encoder[T] = macro encoderRedirect_impl[T]
def encoderRedirect_impl[T : c.WeekTypeTag](c:Context) = {
q"Json.writes[${c.weakTypeOf[T]}]"
}
}
這是我理解的宏重定向。但是你必須在獨立的項目中編寫這段代碼,並將其用作項目的依賴項。
不會用scala編譯2.11 – jilen 2014-08-29 03:36:43
@tiran可能意味着weakTypeOf。我已經修復了代碼。 – 2014-08-29 07:58:17
@EugeneBurmako儘管'weekTypeOf'對於「專業菜單」 – 2014-08-29 09:08:34