2014-08-28 3 views
1

Я пытаюсь обернуть играть JSON пишет макроподстановкамобернуть макросъемки метод расширения

def encoder[T] = Json.writes[T]

Но T неизвестно, так что не будет компилировать, он жалуется

no unapply method found

Я знаю, что могу заменить Json.writes[T] на JsMacroImpl.reads расширение. Есть ли лучший способ сделать это?

ответ

2

Я столкнулся с аналогичной проблемой некоторое время назад. вы можете сделать что-то подобное.

Создайте объект и внутри метода кодирования записи в качестве метода макросов.

object SomeObj { 
    def encoder[T] = macro encoderRedirect_impl[T] 

    def encoderRedirect_impl[T : c.WeekTypeTag](c:Context) = { 
    q"Json.writes[${c.weakTypeOf[T]}]" 
    } 
} 

Это перенаправление макросов для моего понимания. но вы должны написать этот код в отдельном проекте и использовать его в качестве зависимости от вашего проекта.

+0

Не компилируется с помощью scala 2.11 – jilen

+0

@tiran, вероятно, означало weakTypeOf. Я исправил код. –

+0

@EugeneBurmako, даже если 'weekTypeOf' будет хорошим дополнением к« специальному меню », –

Смежные вопросы