Size: a a a

Kotlin Community

2020 October 12

PE

Pavel Erokhin in Kotlin Community
Andrey Antipov
Интересно, планируется ли nested destructuring
Какая-то дичь, nested destructuring)))
источник

AL

Alexander Levin in Kotlin Community
Pavel Erokhin
Какая-то дичь, nested destructuring)))
А в чём проблема?
источник

с#

саша сок #KotlinGang... in Kotlin Community
Pavel Erokhin
Какая-то дичь, nested destructuring)))
val ((name, password), bot) = env
источник

QH

Quantum Harmonizer in Kotlin Community
Pavel Erokhin
Какая-то дичь, nested destructuring)))
ох, хотя бы ради консистентности очень хотелось бы такое
источник

с#

саша сок #KotlinGang... in Kotlin Community
val (acc, bot) = env
val (name, password) = acc
источник

RI

Ruslan Ibragimov in Kotlin Community
саша сок #KotlinGang
val (acc, bot) = env
val (name, password) = acc
with(env) {
   with(/*env.*/foo) {
       // name, password, bot
   }
}
источник

AA

Andrey Antipov in Kotlin Community
Pavel Erokhin
Какая-то дичь, nested destructuring)))
Простой пример, бизнес кейс практически:
data class Address(val street: String, val city: String)
data class User(val name: String, val address: Address)

fun main() {
   val user = User("name", Address("street", "city"))
   val (name, address) = user
   val (street, city) = address
}
То есть, я вынужден деструктуризировать пользователя, а потом адрес.
Логичнее было бы так:
data class Address(val street: String, val city: String)
data class User(val name: String, val address: Address)

fun main() {
   val user = User("name", Address("street", "city"))
   val (name, (street, city)) = user
}
источник

с#

саша сок #KotlinGang... in Kotlin Community
Ruslan Ibragimov
with(env) {
   with(/*env.*/foo) {
       // name, password, bot
   }
}
не костыль 👍🏻
источник

AN

Alexander Nozik in Kotlin Community
Так все дослушал, ребенка помыл. По поводу пропозала с мультиресиверами. Там есть несколько не вполне понятных моментов:
* Как лямбды обозначаются. Ну более или менее понятно, но все-таки
* Как осуществляется разрешение типов
* Как быть если в ресиверах дженерики и их надо разрешать
источник

PE

Pavel Erokhin in Kotlin Community
Andrey Antipov
Простой пример, бизнес кейс практически:
data class Address(val street: String, val city: String)
data class User(val name: String, val address: Address)

fun main() {
   val user = User("name", Address("street", "city"))
   val (name, address) = user
   val (street, city) = address
}
То есть, я вынужден деструктуризировать пользователя, а потом адрес.
Логичнее было бы так:
data class Address(val street: String, val city: String)
data class User(val name: String, val address: Address)

fun main() {
   val user = User("name", Address("street", "city"))
   val (name, (street, city)) = user
}
имхо это всего лишь один из самых простых примеров, просто лично мое мнение что так код превратиться не в очень читаемый, я бы лично предпочел вариант вот через with даже

И пример всего-то с одним вложенным, а если больше наплодят) ну такое такое себе ИМХО
источник

AN

Alexander Nozik in Kotlin Community
Alexander Nozik
Так все дослушал, ребенка помыл. По поводу пропозала с мультиресиверами. Там есть несколько не вполне понятных моментов:
* Как лямбды обозначаются. Ну более или менее понятно, но все-таки
* Как осуществляется разрешение типов
* Как быть если в ресиверах дженерики и их надо разрешать
Ключевой вопрос по разрешению остается - есть порядок или нет порядка. Что будет если актуальный ресивер закрывает оба типа
источник

AM

Andrew Mikhaylov in Kotlin Community
Alexander Nozik
Ключевой вопрос по разрешению остается - есть порядок или нет порядка. Что будет если актуальный ресивер закрывает оба типа
По идее есть порядок, так как каждый декоратор — заворачивание функции в функцию.
источник

RI

Ruslan Ibragimov in Kotlin Community
саша сок #KotlinGang
не костыль 👍🏻
Без structural системы типов грош цена этой фиче. А то что она работает не по именам, а по позициям вообще делает бесполезной для широкого программирования. Чисто как замена get(0), get(1) в коллекциях. 0 usages в моих приложениях
источник

AN

Alexander Nozik in Kotlin Community
По поводу namespace, как тут модно говорить - огонь. Очень органично
источник

AA

Andrey Antipov in Kotlin Community
Pavel Erokhin
имхо это всего лишь один из самых простых примеров, просто лично мое мнение что так код превратиться не в очень читаемый, я бы лично предпочел вариант вот через with даже

И пример всего-то с одним вложенным, а если больше наплодят) ну такое такое себе ИМХО
А, ну да, конечно читаемее, если ко всему этому добавить ещё промежуточные переменные, как в моём примере. Они конечно добавят читаемости и понятности.
источник

PE

Pavel Erokhin in Kotlin Community
Ruslan Ibragimov
Без structural системы типов грош цена этой фиче. А то что она работает не по именам, а по позициям вообще делает бесполезной для широкого программирования. Чисто как замена get(0), get(1) в коллекциях. 0 usages в моих приложениях
согласен
источник

AN

Alexander Nozik in Kotlin Community
Andrew Mikhaylov
По идее есть порядок, так как каждый декоратор — заворачивание функции в функцию.
Вопрос не в порядке оборачивания, а в порядке разрешения.
источник

AM

Andrew Mikhaylov in Kotlin Community
Ну так это ж обычный нестинг, я не вижу, почему там не должно быть порядка.
источник

AM

Andrew Mikhaylov in Kotlin Community
Но может, я и неправ.
источник

PE

Pavel Erokhin in Kotlin Community
Andrey Antipov
А, ну да, конечно читаемее, если ко всему этому добавить ещё промежуточные переменные, как в моём примере. Они конечно добавят читаемости и понятности.
Ну если добавить промежуточные да, но все равно, ну лично мне такое себе,но это я так, пукнул своим мнением))), я уверен что на такую фичу не однозначное мнение, да и мне кажется это оч тяжелая в реализации фича
источник