Size: a a a

Kotlin Community

2020 December 21

AN

Alexander Nozik in Kotlin Community
Тут три фичи в кучу, силед интерфейсы, естеншен интерфейсы, да еще и мультиресиверы. Последние две в принципе связаны, но не близко. Первое вообще сбоку
источник

с#

саша сок #KotlinGang... in Kotlin Community
Alexander Nozik
Тут три фичи в кучу, силед интерфейсы, естеншен интерфейсы, да еще и мультиресиверы. Последние две в принципе связаны, но не близко. Первое вообще сбоку
вот тут я хочу вместе силед интерфейсы и экстеншены

https://t.me/kotlin_lang/220027
источник

с#

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

с#

саша сок #KotlinGang... in Kotlin Community
например если я хочу строку или число
источник

AN

Alexander Nozik in Kotlin Community
саша сок #KotlinGang
вот тут я хочу вместе силед интерфейсы и экстеншены

https://t.me/kotlin_lang/220027
Давайте все-таки конкретный use case, как Роман всегда прочит. И тут явно примесь свифтового синтаксиса.
источник

с#

саша сок #KotlinGang... in Kotlin Community
саша сок #KotlinGang
например если я хочу строку или число
вот
источник

OY

Oleg Yukhnevich in Kotlin Community
саша сок #KotlinGang
вот тут я хочу вместе силед интерфейсы и экстеншены

https://t.me/kotlin_lang/220027
а какой реально смысл этих extension ?
а то я так и не понял из того пропоузола
источник

AN

Alexander Nozik in Kotlin Community
Ничего не понял
источник

AN

Alexander Nozik in Kotlin Community
Еще раз, есть три раздельные фичи (при этом силед интерфейсы явно будут в ближайшем будущем). Но я не понял совершенно, как они должны интерферировать
источник

с#

саша сок #KotlinGang... in Kotlin Community
Alexander Nozik
Давайте все-таки конкретный use case, как Роман всегда прочит. И тут явно примесь свифтового синтаксиса.
плюс у меня много где в моих дсл параметры сейчас наследуются от интерфейсов (которые я планирую заменить sealed), но есть какой-нибудь условный

class Foo : AProperty, BProperty, CProperty {
   //
}

который хотелось бы делать не так, а указывать наследников в AProperty
источник

AN

Alexander Nozik in Kotlin Community
саша сок #KotlinGang
плюс у меня много где в моих дсл параметры сейчас наследуются от интерфейсов (которые я планирую заменить sealed), но есть какой-нибудь условный

class Foo : AProperty, BProperty, CProperty {
   //
}

который хотелось бы делать не так, а указывать наследников в AProperty
Все равно ничего не понял
источник

с#

саша сок #KotlinGang... in Kotlin Community
Oleg Yukhnevich
а какой реально смысл этих extension ?
а то я так и не понял из того пропоузола
чтобы вместо

fun Int.foo() {}
fun Int.bar() {}
fun Int.baz() {}


писать

extension Int {
   fun foo() {}
   fun bar() {}
   fun baz() {}
}


и чтобы я мог написать

interface A {
   fun foo(): Int
}
extension Int : A {
   override fun foo() = this
}
extension String : A {
   override fun foo() = toInt()
}
val a: A = "123"
val a: A = 123
источник

КБ

К Б in Kotlin Community
привет всем. подскажите, есть ли простой способ заполнить строку с котлин-стайл подстановками (типа "хелло $word"), если она получена из ресурсов?
источник

с#

саша сок #KotlinGang... in Kotlin Community
более конкретных юзкейсов я не могу сказать, но понятно, что этот блок нужен, чтобы не дублировать ресивер.
ну и у меня есть свой юзкейс, который я уверен есть в том же kotlin-css и торнаде
источник

AN

Alexander Nozik in Kotlin Community
саша сок #KotlinGang
чтобы вместо

fun Int.foo() {}
fun Int.bar() {}
fun Int.baz() {}


писать

extension Int {
   fun foo() {}
   fun bar() {}
   fun baz() {}
}


и чтобы я мог написать

interface A {
   fun foo(): Int
}
extension Int : A {
   override fun foo() = this
}
extension String : A {
   override fun foo() = toInt()
}
val a: A = "123"
val a: A = 123
Вот теперь понял. Это в принципе решается класс-левел ресиверами.
источник

AN

Alexander Nozik in Kotlin Community
К Б
привет всем. подскажите, есть ли простой способ заполнить строку с котлин-стайл подстановками (типа "хелло $word"), если она получена из ресурсов?
Простого нет. Для этого надо расчехлять котлин компилятор.
источник

OY

Oleg Yukhnevich in Kotlin Community
саша сок #KotlinGang
чтобы вместо

fun Int.foo() {}
fun Int.bar() {}
fun Int.baz() {}


писать

extension Int {
   fun foo() {}
   fun bar() {}
   fun baz() {}
}


и чтобы я мог написать

interface A {
   fun foo(): Int
}
extension Int : A {
   override fun foo() = this
}
extension String : A {
   override fun foo() = toInt()
}
val a: A = "123"
val a: A = 123
последние строчки очень похоже на специализации в плагине arrow, если мне не изменяет память (там где присваивание Int в A)
источник

PE

Pavel Erokhin in Kotlin Community
Alexander Nozik
Простого нет. Для этого надо расчехлять котлин компилятор.
или можно через ksp плагин сделать
источник

КБ

К Б in Kotlin Community
Alexander Nozik
Простого нет. Для этого надо расчехлять котлин компилятор.
а библиотечек тоже нема?
источник

с#

саша сок #KotlinGang... in Kotlin Community
Oleg Yukhnevich
последние строчки очень похоже на специализации в плагине arrow, если мне не изменяет память (там где присваивание Int в A)
ну мы так можем делать, потому что расшири Int этим интерфейсом
источник