Animesh Sahu
01/07/2020, 4:58 AMenum class SAConf {
GND,
VS,
SDA,
SCL
}
and when expression
fun address(A0: SAConf, A1: SAConf): Int = when { // <- expression requires else branch
A0 == SAConf.GND && A1 == SAConf.GND -> 0x40
A0 == SAConf.GND && A1 == SAConf.VS -> 0x41
A0 == SAConf.GND && A1 == SAConf.SDA -> 0x42
A0 == SAConf.GND && A1 == SAConf.SCL -> 0x43
A0 == SAConf.VS && A1 == SAConf.GND -> 0x44
A0 == SAConf.VS && A1 == SAConf.VS -> 0x45
A0 == SAConf.VS && A1 == SAConf.SDA -> 0x46
A0 == SAConf.VS && A1 == SAConf.SCL -> 0x47
A0 == SAConf.SDA && A1 == SAConf.GND -> 0x48
A0 == SAConf.SDA && A1 == SAConf.VS -> 0x49
A0 == SAConf.SDA && A1 == SAConf.SDA -> 0x4A
A0 == SAConf.SDA && A1 == SAConf.SCL -> 0x4B
A0 == SAConf.SCL && A1 == SAConf.GND -> 0x4C
A0 == SAConf.SCL && A1 == SAConf.VS -> 0x4D
A0 == SAConf.SCL && A1 == SAConf.SDA -> 0x4E
A0 == SAConf.SCL && A1 == SAConf.SCL -> 0x4F
}
How do i make compiler know that when is already been exhaustivewcaokaze
01/07/2020, 5:24 AMwhen
is needed.
when (A0) {
SAConf.GND -> when (A1) {
SAConf.GND -> 0x40
SAConf.VS -> 0x41
...
}
SAConf.VS -> when (A1) {
...
}
...
}
Animesh Sahu
01/07/2020, 5:25 AME.Kisaragi
01/07/2020, 9:03 AMwcaokaze
01/07/2020, 9:20 AMval addressMap = mapOf(
SAConf.GND to EnumMap(mapOf(
SAConf.GND to 0x40,
SAConf.VS to 0x41,
...
)),
SAConf.VS to EnumMap(mapOf(
SAConf.GND to 0x44,
SAConf.VS to 0x45,
...
)),
...
)
addressMap[A0][A1]
E.Kisaragi
01/07/2020, 9:21 AME.Kisaragi
01/07/2020, 9:22 AMwcaokaze
01/07/2020, 9:22 AME.Kisaragi
01/07/2020, 9:23 AMKroppeb
01/07/2020, 1:33 PME.Kisaragi
01/07/2020, 3:37 PME.Kisaragi
01/07/2020, 3:37 PMAnimesh Sahu
01/07/2020, 3:38 PMKroppeb
01/07/2020, 3:38 PM