miha-x64
08/06/2019, 12:37 PMhashMapOf(варарг пар)
• можно заводить массив ключей и массив значений и искать линейно, при размере в 10 элементов никто не пострадает, но некрасиво и неподдерживаемо
• часто ключи или значения примитивны, а ради пары таких мест совсем не хочется затаскивать trove или что-нибудь в этом роде
• иногда можно взять энамы, но это отдельный класс со всем приданным ($VALUES, имена констант и т. п.)
в итоге зачастую оставляю страшненький switch/when, потому что просто ничего лучше не могу предложить.
Фантазирую какой-то, извините за грубое слово, макрос
val mapping = wtf![
key : value,
key : value,
default: value
]
...
mapping[key]
который скомпилируется во что-нибудь такое
val mappingKeys = arrayOf(key, key, ...) // sorted
val mappingValues = arrayOf(value, value, ...) // sorted according to key set
val mappingDefault = default
...
mappingKeys.binarySearch(key).let { if (it < 0) default else mappingValues[it] }
Даже не знаю, в какой канал с этим, т. к. не предложение, а рассуждение и нытьё 🙂aleksey.tomin
08/06/2019, 12:53 PMmiha-x64
08/06/2019, 12:56 PMaleksey.tomin
08/06/2019, 12:59 PMaltavir
08/07/2019, 7:43 AMmiha-x64
08/07/2019, 8:01 AMaltavir
08/07/2019, 8:03 AMto
, но тут можно грабли подложить.