В приведенном ниже коде я пытаюсь преобразовать битовые флаги int в enum, но я не получаю правильных результатов.
Enum Flags
enum class State {
NONE = 0,
FORWARD =4,
BACKWARD =5,
}
Битовый флаг и преобразование
infix fun Int.withFlag(flag: Int) = this or flag
fun fromInt(value: Int) = values().mapNotNull {
if (it.value.withFlag(value) == value ) it else null
}
Действие
// backward
val flag = 5
State.fromInt(flag)
Результаты
// results NONE, FORWARD, BACKWARD
// expected BACKWARD