Advent of Code 2017

С большим трудом прошёл-таки в Рождество весь Advent of Code 2017.

Что не так? Старею или Kotlin подвёл? Вторую часть 23-го дня ну никак не удавалось решить самому, слава богу на Reddit всё разжёвано даже для таких, как я.

Что привело в бешенство в Kotlin — нельзя по-человечески, как в Go, вернуть несколько значений из функции в несколько переменных. 2018 год наступил, а авторы языка хотят, чтобы программист провернул следующий финт:

1. cоздал структуру

data class MultiValueReturn(val value1: Int, val value2: String)

2. вернул из функции экземпляр этой структуры с заполненными полями

fun myFancyFun(): MultiValueReturn {
    return MultiValueReturn(1, "Hello")
}

3. в месте вызова функции сделал деструктурирование в константы:

val (a1, a2) = myFancyFun() // a1==1, a2=="Hello"

В чём недостатки:

  • лишние сущности и действия: какие-то ненужные, явно создаваемые структуры
  • нельзя деструктурировать в уже имеющиеся переменные, объявленные как var. Ну и зачем кому-то эти неизменяемые константы, скажите на милость?!

Один комментарий к “Advent of Code 2017”

Что скажете?