Size: a a a

Kotlin Community

2019 October 22

I

Ivan in Kotlin Community
источник

BP

Bogdan Panchenko in Kotlin Community
interface Foo {
   fun bar(min: Int, max: Int = min): Int
}


class Bar : Foo {
   
   override fun bar(min: Int, max: Int): Int {
       return 0
   }
}

fun main() {
   val foo: Foo = Bar()
   val bar = Bar()

   foo.bar(1)
   bar.bar(2)
}
источник

BP

Bogdan Panchenko in Kotlin Community
так это оверлод паметров поумолчанию делать нельзя
источник

I

Ivan in Kotlin Community
Bogdan Panchenko
так это оверлод паметров поумолчанию делать нельзя
даже, если в интерфейсе нет по умолчанию параметра, все равно ругается
источник

BP

Bogdan Panchenko in Kotlin Community
Ivan
даже, если в интерфейсе нет по умолчанию параметра, все равно ругается
это ограничения на override - я бы так сказал
источник

I

Ivan in Kotlin Community
видимо придется просто еще один метод, блин, убого выглядит
источник

I

Ivan in Kotlin Community
Bogdan Panchenko
это ограничения на override - я бы так сказал
ну и по сути JvmOverloads не работает с контрактными методами...
источник

BP

Bogdan Panchenko in Kotlin Community
Ivan
видимо придется просто еще один метод, блин, убого выглядит
п сделать в интерфейсе нельзя ? или нужно по разному ?
источник

I

Ivan in Kotlin Community
Bogdan Panchenko
п сделать в интерфейсе нельзя ? или нужно по разному ?
можно, но хотелось красиво))
источник

BP

Bogdan Panchenko in Kotlin Community
Ivan
ну и по сути JvmOverloads не работает с контрактными методами...
JvmOverloads - говорит компилятору понагенерировать методов, default методы не оверайдятся, смотри байт код в какую магию они превращаются (генерируется статик функция - для интерфейса)
источник

BP

Bogdan Panchenko in Kotlin Community
Ivan
можно, но хотелось красиво))
понятие "красиво" - у каждего сове
источник

I

Ivan in Kotlin Community
Bogdan Panchenko
JvmOverloads - говорит компилятору понагенерировать методов, default методы не оверайдятся, смотри байт код в какую магию они превращаются (генерируется статик функция - для интерфейса)
да, смотрел как-то, думал мало ли - может есть какие пути обходные))
источник

BV

Boris Vanin in Kotlin Community
С делегатами всё же было бы чище сделать просто варианты операторов без этих параметров, но у этого решения есть два неприятных момента. Первый, это что существующие делегаты нельзя просто взять и поменять их сигнатуры (хотя если реализации приватные, то норм), м второе, это что такой подход создаст двусмысленность в интерпретации двух одинаковых операторов с разными набором параметров 🤷‍♂
источник

QH

Quantum Harmonizer in Kotlin Community
Boris Vanin
С делегатами всё же было бы чище сделать просто варианты операторов без этих параметров, но у этого решения есть два неприятных момента. Первый, это что существующие делегаты нельзя просто взять и поменять их сигнатуры (хотя если реализации приватные, то норм), м второе, это что такой подход создаст двусмысленность в интерпретации двух одинаковых операторов с разными набором параметров 🤷‍♂
третье — часто нужно только имя проперти, как минимум для уникальности
источник

BV

Boris Vanin in Kotlin Community
Quantum Harmonizer
третье — часто нужно только имя проперти, как минимум для уникальности
Но имя этот почти вся пропертя, думаю сравнимо по быстродействию
источник

QH

Quantum Harmonizer in Kotlin Community
Boris Vanin
Но имя этот почти вся пропертя, думаю сравнимо по быстродействию
лол, вся пропертя — это горы рефлекшена, а имя — это одну константу вставить
источник

BV

Boris Vanin in Kotlin Community
Quantum Harmonizer
лол, вся пропертя — это горы рефлекшена, а имя — это одну константу вставить
🤔 мм, ну да, если её прямо из сорцов туда передавать, то да, но это будет больно хитрый инстриник, это всё-таки параметр функции.. хотя может не насколько хитрый как проверять используемость этого параметра
источник

QH

Quantum Harmonizer in Kotlin Community
Boris Vanin
🤔 мм, ну да, если её прямо из сорцов туда передавать, то да, но это будет больно хитрый инстриник, это всё-таки параметр функции.. хотя может не насколько хитрый как проверять используемость этого параметра
в итоге так и делается для случаев, когда функция делегирования инлайновая
источник

BV

Boris Vanin in Kotlin Community
Quantum Harmonizer
в итоге так и делается для случаев, когда функция делегирования инлайновая
Чот никогда не задумывался, что она может быть инлайновой 😬
источник

AP

Andrey Panov in Kotlin Community
Блин. Вот сел, думаю ща котлин нейтив попробую... Не замена go конечно, но думал попробую все равно... И нифига. Даже не нашел где компилятор скачать. Из исходников тоже не собрался. Вот как так жить...
источник