簡體   English   中英

包裝宏擴展方法

[英]wrap a macro expansion method

我正在嘗試包裝播放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]}]"
  }
}

根據我的理解,這是宏重定向。 但是您必須在單獨的項目中編寫此代碼,並將其用作項目的依賴項。

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM