Rob Elliot
02/05/2024, 6:20 PMenum class ExampleEnum {
Val1, Val2, Val3
}
fun transform(exampleEnum: ExampleEnum): Int = when (exampleEnum) {
ExampleEnum.Val1 -> 1
else -> {
val tmp = when (exampleEnum) {
ExampleEnum.Val2 -> 2
ExampleEnum.Val3 -> 3
}
tmp * 2
}
}
Rob Elliot
02/05/2024, 6:21 PMfun transform(exampleEnum: ExampleEnum): Int = when (exampleEnum) {
ExampleEnum.Val1 -> 1
ExampleEnum.Val2 -> 2 * 2
ExampleEnum.Val3 -> 3 * 2
}
(Obviously in the real world the operation to apply to 2 & 3 is more complex!)Klitos Kyriacou
02/05/2024, 6:26 PMRob Elliot
02/05/2024, 6:27 PMelectrolobzik
02/05/2024, 7:15 PMsealed interface A {
Val1 : A
sealed interface B: A {
Val 2: B
Val 3: B
}
}
In this case you will be able to divide Val 1 from Val2 and Val3, keeping all of them in one bigger sealed type A.electrolobzik
02/05/2024, 7:16 PMRob Elliot
02/05/2024, 9:12 PMEnum.valueOf
is more convenient than sealed interfaces, but thanks.David Kubecka
02/06/2024, 8:25 AM