Size: a a a

Kotlin Community

2020 October 14

AN

Alexander Nozik in Kotlin Community
саша сок #KotlinGang
можно мне пример, где прямо требуется изменение сигнатуры ?
Мультиресивер
источник

с#

саша сок #KotlinGang... in Kotlin Community
Alexander Nozik
Мультиресивер
а как его планировали вообще делать ?
источник

с#

саша сок #KotlinGang... in Kotlin Community
а стоп
источник

AN

Alexander Nozik in Kotlin Community
саша сок #KotlinGang
а как его планировали вообще делать ?
Надо взять и посмотреть доклад
источник

AL

Alexander Levin in Kotlin Community
Ayrat Hudaygulov
можно ж reified T сделать, не?
Я возможно туплю, а что за тип будет? Тут T это возвращаемый результат, не вся сигнатура функции.
источник

с#

саша сок #KotlinGang... in Kotlin Community
Alexander Nozik
Надо взять и посмотреть доклад
да, я понял. я не туда посмотрел
источник

AH

Ayrat Hudaygulov in Kotlin Community
Alexander Levin
Я возможно туплю, а что за тип будет? Тут T это возвращаемый результат, не вся сигнатура функции.
я имел в виду что инлайн с reified позволяет получать нестёртый дженерик
источник

с#

саша сок #KotlinGang... in Kotlin Community
саша сок #KotlinGang
@noraltavir

class Decorator {
    inline operator fun <T> decorate(func: KDecoratable<T>): T {
        val result = func()
        val params = func.params.joinToString(", ") { it.value }
        println("${func.name}($params): $result")
        return result
    }
}


что-то такое вообще не варик делать?

и если их несколько, то можно через запятую и т.к. там инлайн функции, то всё норм можно сделать. но это если запретить смену сигнатуры
хотя этот подход тоже не норм. потому что дженерики возвращают функцию и могут менять её параметры, и вообще всё
источник

AM

Andrew Mikhaylov in Kotlin Community
Alexander Levin
Я возможно туплю, а что за тип будет? Тут T это возвращаемый результат, не вся сигнатура функции.
Ввести reified inline fun, которая всю сигнатуру сохраняет?))
источник

с#

саша сок #KotlinGang... in Kotlin Community
Alexander Nozik
Мультиресивер
а почему бы не сделать просто

fun (A, B).example()

зачем тут декораторы
источник

с#

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

AL

Alexander Levin in Kotlin Community
Я вроде немного начал видеть, почему эти фичи (мультиресиверы и декораторы) можно считать немного связанными друг с другом, но все равно сложно:

Ну, если считать, что transactional выглядит не как fun <T> transactional(action: () -> T): T, а как fun <T> transactional(action: TransactionalContext.() -> T): T, то как и в случае дополнительного ресивера у нас появляется ещё один контекст, в котором функция может работать.

... но все равно есть и различия в применимости и непонятно, удобно ли объединять.
источник

с#

саша сок #KotlinGang... in Kotlin Community
class DebugDelegate {
    inline operator fun <T> delegateFunction(func: KDecoratable<T>): T {
        val result = func()
        val params = func.params.joinToString(", ") { it.value }
        println("${func.name}($params): $result")
        return result
    }
}

val debug = DebugDelegate()


fun fibonacci(at: Int) by debug, memoizable {
   // Body
}
источник

с#

саша сок #KotlinGang... in Kotlin Community
только вот сложно, если тут типы будут менять и будет несколько делегатов. например by launch должно Job возвращать и можно запутаться в том, как писать функцию

// Debug будет выводить Job как результат
fin fib(at: Int) by launch, debug {

}

или

// Debug будет выводить результат функции как результат
fun fib(at: Int) by debug, launch {

}
источник

AN

Alexander Nozik in Kotlin Community
Вот кстати доклад Дмитрия слушаю с задержкой (только от лекций освободился). По изложению отлично, не тригерится ничего как вчера. Я кажется понял, в чем моя проблема. Перерепетированные доклады у меня за какую-то проф. деформацию цеплюяются.
источник

е

енот in Kotlin Community
Здравствуйте, у меня нубский вопрос по Exposed DAO.
https://gist.github.com/chemax/05efb6848b7e5ea6f5d64f3cffa5e5ab#file-helloworld-kt-L113
Есть такой код, он, по сути, небольшая модификация официальных примеров.
Разбираюсь с many-to-many
В примере показано как создать  много подчиненных сущностей.
Но не показано, как добавить ещё одну сущность? Если, как вы видите в моём коде, я добавляю тем же способом ford в список, то предыдущие записи затираются.
Очевидный способ - запросить сначала всех имеющихся и к ним добавить нового и так присвоить, но выглядит это как так себе решение. Наверняка есть более разумный способ, но в вики Exposed я его не вижу. Подскажите, пожалуйста.
источник

AN

Alexander Nozik in Kotlin Community
Alexander Nozik
Вот кстати доклад Дмитрия слушаю с задержкой (только от лекций освободился). По изложению отлично, не тригерится ничего как вчера. Я кажется понял, в чем моя проблема. Перерепетированные доклады у меня за какую-то проф. деформацию цеплюяются.
Кстати рекомендую доклад. Очень пользительно
источник

AM

Andrew Mikhaylov in Kotlin Community
Alexander Nozik
Вот кстати доклад Дмитрия слушаю с задержкой (только от лекций освободился). По изложению отлично, не тригерится ничего как вчера. Я кажется понял, в чем моя проблема. Перерепетированные доклады у меня за какую-то проф. деформацию цеплюяются.
Шо там, снова бенефис эффектных Егора и Катерины между сессиями? :)
источник

AN

Alexander Nozik in Kotlin Community
Andrew Mikhaylov
Шо там, снова бенефис эффектных Егора и Катерины между сессиями? :)
Не знаю, я сейчас только доклад слушаю, потому что весь день были лекции.
источник

AN

Alexander Nozik in Kotlin Community
Вообще уважамс JB доклады очень интересные.
источник