Size: a a a

Kotlin Community

2020 June 23

BP

Bogdan Panchenko in Kotlin Community
Andrew Mikhaylov
Значит у меня в очередной раз не открылась правильно ссылка с сайта :(
Очень часто такое, когда делаешь shared ссылку
источник

М

Мади in Kotlin Community
Подскажите есть ли ресурс по типу javarush для Kotlin, с разными задачами и проверкой ?
источник

QH

Quantum Harmonizer in Kotlin Community
Мади
Подскажите есть ли ресурс по типу javarush для Kotlin, с разными задачами и проверкой ?
Kotlin Koans
источник

IO

Iaroslav Orlov in Kotlin Community
Мади
Подскажите есть ли ресурс по типу javarush для Kotlin, с разными задачами и проверкой ?
источник

I

Ilmir in Kotlin Community
Andrew Mikhaylov
Йоу, чатик, как вы решаете проблему с типом, для которого может быть несколько критериев равенства для разных мест в коде? Или это безусловный признак того, что тип надо пилить на несколько, и каждому свой equals определять?
Делаю разные extension operator fun equals.
источник

AM

Andrew Mikhaylov in Kotlin Community
Ilmir
Делаю разные extension operator fun equals.
У вас там и анноташки есть, чтобы встроенные equals глушить, так не честно.
источник

I

Ilmir in Kotlin Community
Andrew Mikhaylov
У вас там и анноташки есть, чтобы встроенные equals глушить, так не честно.
Тогда можно по перловскому infix fun A.eq(other: A): Boolean и использовать как a1 eq a2.
источник

AN

Alexander Nozik in Kotlin Community
Ilmir
Делаю разные extension operator fun equals.
Погоди, а его разве можно оператором назначать? Это я чего-то продолбал
источник

I

Ilmir in Kotlin Community
Alexander Nozik
Погоди, а его разве можно оператором назначать? Это я чего-то продолбал
Да, ты прав, без особой магии с постпроцессом байткода, который заменяет INVOKESTATIC kotlin/jvm/internal/Intrinsics.areEqual (Ljava/lang/Object;Ljava/lang/Object;)Z на вызов своей функции не получится.
источник

IO

Iaroslav Orlov in Kotlin Community
Ilmir
Да, ты прав, без особой магии с постпроцессом байткода, который заменяет INVOKESTATIC kotlin/jvm/internal/Intrinsics.areEqual (Ljava/lang/Object;Ljava/lang/Object;)Z на вызов своей функции не получится.
а сравнение делается через именно через интринсик?
источник

AN

Alexander Nozik in Kotlin Community
Ilmir
Да, ты прав, без особой магии с постпроцессом байткода, который заменяет INVOKESTATIC kotlin/jvm/internal/Intrinsics.areEqual (Ljava/lang/Object;Ljava/lang/Object;)Z на вызов своей функции не получится.
Ну значит не продолбал. Мне конкретно equals не особо сдался правда. Вот плюсы - минусы - это актуально. Эх, мне нужна хотя бы эмуляция мультиресиверов.
источник

I

Ilmir in Kotlin Community
Iaroslav Orlov
а сравнение делается через именно через интринсик?
Да, тогда если lhs == null NPE не будет выброшен.
источник

IO

Iaroslav Orlov in Kotlin Community
Ilmir
Да, ты прав, без особой магии с постпроцессом байткода, который заменяет INVOKESTATIC kotlin/jvm/internal/Intrinsics.areEqual (Ljava/lang/Object;Ljava/lang/Object;)Z на вызов своей функции не получится.
а компиляторный плагин может постпроцессить байткод?
источник

I

Ilmir in Kotlin Community
Iaroslav Orlov
а компиляторный плагин может постпроцессить байткод?
Он прямо влияет на генерацию байткода. Поэтому ему не надо постпроцессить байткод.
источник

AM

Andrew Mikhaylov in Kotlin Community
Ilmir
Он прямо влияет на генерацию байткода. Поэтому ему не надо постпроцессить байткод.
Там же вроде заложены какие-то ограничения на изменения существующих методов, нет?
источник

AM

Andrew Mikhaylov in Kotlin Community
Я не помню, на что конкретно я жалобы читал в слаке.
источник

I

Ilmir in Kotlin Community
Andrew Mikhaylov
Там же вроде заложены какие-то ограничения на изменения существующих методов, нет?
Зависит от бекенда. По идее, такое должно быть возможно хотя бы в JVM_IR.
источник

I

Ilmir in Kotlin Community
Но подождём официального Plugin API и тогда уж точно будет понятно, можно такое делать или нет.
источник

AM

Andrew Mikhaylov in Kotlin Community
Ilmir
Но подождём официального Plugin API и тогда уж точно будет понятно, можно такое делать или нет.
Логично, да.
источник

VK

Vladyslav Kopaniev in Kotlin Community
Andrew Mikhaylov
Йоу, чатик, как вы решаете проблему с типом, для которого может быть несколько критериев равенства для разных мест в коде? Или это безусловный признак того, что тип надо пилить на несколько, и каждому свой equals определять?
Можно попробовать https://arrow-kt.io/docs/0.10/arrow/typeclasses/eq/
источник