Size: a a a

Kotlin Community

2019 December 09

KG

Kirill Gamazkov in Kotlin Community
Lev Shagalov
Ну, мне вот надо трнаслитерацию сделать с русского на английский
А я бы пошёл через набор массивов. Примерно так:
val alphabet = "абвгдеёжзийклмнопрстуфхцчшщъыьэюя".let { it + it.toUpperCase() }
   val mapping = alphabet.map { it to "mapping from $it to anything" }.sortedBy { it.first }

   //этот mapping только для примера, что символ можно отбразить на что угодно

   var currentRange = mutableListOf(mapping[0])
   val ranges = mutableListOf(currentRange)
   for (i in 1 until mapping.size) {
       if (mapping[i].first != mapping[i - 1].first.inc()) {
           currentRange = mutableListOf()
           ranges.add(currentRange)
       }
       currentRange.add(mapping[i])
   }
   println(ranges)
   val translate = { c: Char ->
       val range = ranges.first { it[0].first <= c }
       val index = c.minus(range[0].first)
       range[index].second
   }
   println(translate('Ё'))


Хм, правильно помню, что символ "Ё" идёт отдельно от диапазона остальной кириллицы
источник
2019 December 10

LS

Lev Shagalov in Kotlin Community
Kirill Gamazkov
А я бы пошёл через набор массивов. Примерно так:
val alphabet = "абвгдеёжзийклмнопрстуфхцчшщъыьэюя".let { it + it.toUpperCase() }
   val mapping = alphabet.map { it to "mapping from $it to anything" }.sortedBy { it.first }

   //этот mapping только для примера, что символ можно отбразить на что угодно

   var currentRange = mutableListOf(mapping[0])
   val ranges = mutableListOf(currentRange)
   for (i in 1 until mapping.size) {
       if (mapping[i].first != mapping[i - 1].first.inc()) {
           currentRange = mutableListOf()
           ranges.add(currentRange)
       }
       currentRange.add(mapping[i])
   }
   println(ranges)
   val translate = { c: Char ->
       val range = ranges.first { it[0].first <= c }
       val index = c.minus(range[0].first)
       range[index].second
   }
   println(translate('Ё'))


Хм, правильно помню, что символ "Ё" идёт отдельно от диапазона остальной кириллицы
Что то... Я просто when написал и все... Зачем такое городить?
источник

I

Ilmir in Kotlin Community
Не надо!!!
источник

BP

Bogdan Panchenko in Kotlin Community
Пока несильно голосов прибавилось
источник

I

Ilmir in Kotlin Community
Bogdan Panchenko
Пока несильно голосов прибавилось
Ну и не надо. Проголосуйте лучше за https://youtrack.jetbrains.com/issue/KT-6456. Там столько же голосов.
источник

AT

Alexey Tkachenko in Kotlin Community
Вот это реально годная фича, я за!
источник

QH

Quantum Harmonizer in Kotlin Community
- few people need this
- more people are likely to misuse this

Именно так.
источник

BP

Bogdan Panchenko in Kotlin Community
Ну так там и написано что этим могут злоупотреблять
источник

QH

Quantum Harmonizer in Kotlin Community
Ilmir
Не надо!!!
Баги жвм-бэкэнда фиксить не надо?)
источник

BP

Bogdan Panchenko in Kotlin Community
Quantum Harmonizer
Баги жвм-бэкэнда фиксить не надо?)
Конечно нет, будем новые фичи заводить которые принесут больше багов 😊
источник

QH

Quantum Harmonizer in Kotlin Community
Bogdan Panchenko
Конечно нет, будем новые фичи заводить которые принесут больше багов 😊
А, ок
источник

KG

Kirill Gamazkov in Kotlin Community
Lev Shagalov
Что то... Я просто when написал и все... Зачем такое городить?
Ну если производительность волнует, можно пойти на предвычисления. Если не волнует - то примерно пофиг, when или map
источник

AT

Alexey Tkachenko in Kotlin Community
чтобы так сильно волновала производительность транслитерации, надо транслитерировать, ну не знаю, гигабайтами, наверное
источник

VB

Viacheslav Blinov in Kotlin Community
Bogdan Panchenko
Я не против хаков в компиляторе. Это вполне годное развитие яп
Так и до макросов недалеко
источник

AT

Alexey Tkachenko in Kotlin Community
#define TRUE FALSE
источник

VB

Viacheslav Blinov in Kotlin Community
Такое себе. Трейты были бы полезнее. В очередной раз сегодня чертыхнулся об то что их нет в котле)
источник

AT

Alexey Tkachenko in Kotlin Community
А чем они лучше интерфейсов?
источник

VB

Viacheslav Blinov in Kotlin Community
Тем что можно расширить базовый класс
источник

VB

Viacheslav Blinov in Kotlin Community
Это как если бы через экстеншны можно было филд добавить ;)
источник

K

Kopusha in Kotlin Community
трейты же есть в котлине, или вы про миксины? Типа чтоб полноценные поля были?
источник