Nikita Klimenko [JB]
10/02/2024, 6:36 PM@DataSchema
annotated interface sealed?Yogeshvu
10/04/2024, 12:10 AMNikita Klimenko [JB]
10/07/2024, 3:40 PM@DataSchema
sealed interface Test {
val a: Int
}
@DataSchema
interface Test2 : Test {
val b: String
}
@DataSchema
interface Test3 : Test {
val c: String
}
fun transform(df: DataFrame<*>) {
val typed = Test.of(df)
when (typed) {
is Test1 -> ...
is Test2 -> ...
is Test3 -> ...
null -> ...
}
}
Yogeshvu
10/08/2024, 1:02 PMNikita Klimenko [JB]
10/08/2024, 1:19 PMisinstance
before, seems connected. I understand better now. I have this idea in mind:
@SealedDataSchema
sealed interface Test {
val a: Int
companion object
}
@DataSchema
interface Test2 : Test {
val b: String
}
@DataSchema
interface Test3 : Test {
val c: String
}
generated code:
sealed class Wrapper {
abstract val df: DataFrame<Test>
}
class Wrapper2 : Wrapper {
override val df: DataFrame<Test2>
}
class Wrapper3 : Wrapper {
override val df: DataFrame<Test3>
}
fun Test.Companion.of(df: DataFrame<*>): Wrapper? {
TODO("need to figure out this part, need to pick most suitable schema for df")
}
use:
fun transform(df: DataFrame<*>) {
val typed = Test.of(df)
when (typed) {
is Wrapper -> typed.df.a
is Wrapper2 -> typed.df.b
is Wrapper3 -> typed.df.c
null -> ...
}
}
Yogeshvu
10/08/2024, 1:23 PMNikita Klimenko [JB]
10/08/2024, 1:26 PM