Предположим, у меня есть кортежМожем ли мы создать псевдоним типа для кортежа динамически?
val myTuple: (String,Int,String,...,Boolean) = ("",0,"",..,true)
Я могу написать псевдоним типа
type MyType = (String,Int,String,...,Boolean)
val myTuple: MyType = ("",0,"",..,true)
Могу ли я написать этот псевдоним типа динамически? Есть ли способ не быть явным в псевдониме этого типа и позволить компилятору найти сам тип, чтобы связать его с псевдонимом?
Для Exemple что-то вроде
case class MyCaseClass(x: String,y: Int,z:String,...,zz:Boolean)
type MyDynamicTupleType = MyCaseClass.tupled.parameter1.type
Не уверен, что это возможно, или, если это очень полезно, просто узнать, что с очень длинными кортежей пишущих псевдонимами очень скучный и просто шаблонный (exemple here).
Открыть для макро-основе или бесформенных решений
Я не совсем уверен, что вы просите. Но для этого вы можете найти Shapeless. См. Https://github.com/milessabin/shapeless/wiki/Feature-overview:-shapeless-2.0.0#generic-representation-of-sealed-families-of-case-classes – acjay
да, похоже, так. Открыто для бесформенного примера, достигающего этого тоже :) –
Я не думаю, что вы можете это сделать во время исполнения (Barring Shapeless). Но все же вы можете попробовать сделать это с помощью Scala Macros. –