Size: a a a

Kotlin Community

2021 January 06

AL

Alexander Levin in Kotlin Community
Alexander Nozik
Ну так тогда так и надо говорить, что там могут быть только константы. И тогда возникает волшебная функция, у которой разный возвращаемый (статический!) тип в зависимости от аргумента. Фигня какая-то
Ну, для меня это что-то implied by usecase. Но с типом опять-таки не больше магии, чем сейчас с componentN.
источник

AN

Alexander Nozik in Kotlin Community
Ruslan Ibragimov
Он не статический, он зависит от типа справа (например от ключа в мапе)
Так как это семантически увязать с обычными функциями?
источник

с#

саша сок #KotlinGang... in Kotlin Community
Ruslan Ibragimov
Он не статический, он зависит от типа справа (например от ключа в мапе)
а как это будет выглядеть в дата классах ?
источник

RI

Ruslan Ibragimov in Kotlin Community
Alexander Nozik
Так как это семантически увязать с обычными функциями?
@Jellymath выше показал
источник

RI

Ruslan Ibragimov in Kotlin Community
саша сок #KotlinGang
а как это будет выглядеть в дата классах ?
как функция которая принимает KProperty<T>
источник

DK

Denis Kalinochkin in Kotlin Community
Alexander Levin
Зачем при деструктурировании позволять что-то, кроме констант? Как-то не видится, что кому-то нужно:

val { "a".repeat(100) } = foo
class Foo {
 fun <reified T> get(...): T = ...
}

val { a } = Foo()
Какой тип у a?
источник

AL

Alexander Levin in Kotlin Community
Denis Kalinochkin
class Foo {
 fun <reified T> get(...): T = ...
}

val { a } = Foo()
Какой тип у a?
Тип не указан, ошибка компиляции. Опять-таки, тоже самое, что прямо сейчас уже с componentN
источник

с#

саша сок #KotlinGang... in Kotlin Community
Ruslan Ibragimov
как функция которая принимает KProperty<T>
интересно, но раз сделали componentN, почему бы уж не сделать componentName.

вообще спорно для меня выглядит, но вероятно лучше таких решений.
источник

AN

Alexander Nozik in Kotlin Community
Ruslan Ibragimov
как функция которая принимает KProperty<T>
А вот это тогда уже интересная мысль. a[::aProperty]. Это разумно, но не понятно, как это в деструктурирование
источник

DK

Denis Kalinochkin in Kotlin Community
Alexander Levin
Тип не указан, ошибка компиляции. Опять-таки, тоже самое, что прямо сейчас уже с componentN
Как тогда написать get, который возвращает строку для одного имени и число для другого, и безопасно его вызвать?
источник

с#

саша сок #KotlinGang... in Kotlin Community
саша сок #KotlinGang
интересно, но раз сделали componentN, почему бы уж не сделать componentName.

вообще спорно для меня выглядит, но вероятно лучше таких решений.
просто если добавить named destruction и при это не решить проблему с дата классами - это будет странно.

ну и указывать явно тип тоже неоч.

val { name: String, age: Int } = person

ну хз
источник

AN

Alexander Nozik in Kotlin Community
саша сок #KotlinGang
интересно, но раз сделали componentN, почему бы уж не сделать componentName.

вообще спорно для меня выглядит, но вероятно лучше таких решений.
Потому что это было в груви и получается каша
источник

AL

Alexander Levin in Kotlin Community
Denis Kalinochkin
Как тогда написать get, который возвращает строку для одного имени и число для другого, и безопасно его вызвать?
Ну вот прямо сейчас у вас может быть:

val (a: Int, b: String) = invocationOnMock

Логика ровно такая же.
источник

с#

саша сок #KotlinGang... in Kotlin Community
Alexander Nozik
Потому что это было в груви и получается каша
понял, спасибо
источник

DK

Denis Kalinochkin in Kotlin Community
Alexander Levin
Ну вот прямо сейчас у вас может быть:

val (a: Int, b: String) = invocationOnMock

Логика ровно такая же.
Дженерик параметры моков точно тайпчекаются при компиляции?
источник

с#

саша сок #KotlinGang... in Kotlin Community
Alexander Levin
Ну вот прямо сейчас у вас может быть:

val (a: Int, b: String) = invocationOnMock

Логика ровно такая же.
там кстати было иссью ещё с котлина 1.3, что смарткаст игнорит тип и там всё равно Any (хз пофиксили или нет)
источник

AL

Alexander Levin in Kotlin Community
Denis Kalinochkin
Дженерик параметры моков точно тайпчекаются при компиляции?
Ну если правильную reified функцию написать - да, конечно.
источник

AL

Alexander Levin in Kotlin Community
А, всмысле стоп
источник

с#

саша сок #KotlinGang... in Kotlin Community
Alexander Levin
А, всмысле стоп
в компайл тайме не
источник

DK

Denis Kalinochkin in Kotlin Community
А как ее написать? Можно пример, чтобы она для одного значения возвращала инт, для другого строку, и неправильный вызов не компилировался?
источник