benim makro bazı tip bir WeakTypeTag
var ve aşağıdaki gibi ben kod oluşturmak istiyorum:Bir scala makrosunun içinden WeakTypeTag uygulamasının oluşturulması mümkün mü?
def macroCreate[A] = macro _macroCreate[A]
def _macroCreate[A](c: Context)(implicit wtt: c.WeakTypeTag[A]) = {
c.Expr(Apply(Select(???, newTermName("apply")), List(c.literal(1).tree)))
}
sorundur:
macroCreate[SomeObject] // => SomeObject(1)
bir makro tanımı böyle bir şey olacak , verilen tür için Select
nasıl alabilirim?
"."
numaralı bölüme ayrılan ve ardından dize listesinden bir Select
oluşturmak için, türü bir dizgeye dönüştürmenin bir geçici çözümünü kullanabilirim, ancak bu hacky gibi görünüyor.
Select
doğrudan tip etiketinden mi oluşturulabilir?
Küçük bir düzenleme ekledim (select içinde 'newTermName'), çünkü scalac kullanımdan kaldırma uyarısı atar. Teşekkürler! – Rogach
Oh, sağ - teşekkürler! Çok hızlı yazarak ... –