Size: a a a

Kotlin Community

2020 August 21

RE

Roman Elizarov in Kotlin Community
источник

VK

Vladyslav Kopaniev in Kotlin Community
Парни, ни кто не сталкивался с проблемой того что следующий месседж постоянно в идее выскакивает и мешает нормально работать в редакторе?
источник

VK

Vladyslav Kopaniev in Kotlin Community
можно ли как-то этот vcs update отключить?
источник

AN

Alexander Nozik in Kotlin Community
Vladyslav Kopaniev
Парни, ни кто не сталкивался с проблемой того что следующий месседж постоянно в идее выскакивает и мешает нормально работать в редакторе?
А у вас случайно нигде не включена автоматическая синхронизация с гитом?
источник

VK

Vladyslav Kopaniev in Kotlin Community
Alexander Nozik
А у вас случайно нигде не включена автоматическая синхронизация с гитом?
кажись нашел настройку - "Explicitly check for incoming commits on remote". Стояло в Auto
источник

AN

Alexander Nozik in Kotlin Community
Vladyslav Kopaniev
кажись нашел настройку - "Explicitly check for incoming commits on remote". Стояло в Auto
Не знаю, У меня вроде чекает только когда ручками проверяешь
источник

VK

Vladyslav Kopaniev in Kotlin Community
Alexander Nozik
Не знаю, У меня вроде чекает только когда ручками проверяешь
не, все равно продолжает зависать и паузить индекс
источник

VS

Vladimir Sitnikov in Kotlin Community
Roman Elizarov
Обсуждали уже много раз. Вот только недавно снова в slack-е. Kotlin это не JS. Одна из важных целей языка это tooling-friendliness. Когда вы пишете val ( у IDE не будет способа узнать что вы напишете справа и какие имена вам надо подсказать в auto-completion.
Неочень понимаю аргументацию.

Точно так же можно сказать, что «Когда вы пишете val, у IDE не будет способа узнать что вы напишете справа и какие имена надо подсказать в auto-completion».

Иными словами, аргументация val ( тяжело для IDE, а «`val` легко» неясна.

Я конечно, понимаю, что какой-нибудь синтаксис в духе regexp.find(«source string»).let { a, b, ->  проще для автодополнения, т.к. к моменту когда дело дойдёт до let левая часть уже написана, и можно посмотреть на её тип.

Но не всегда удобно, что новые переменные получаются только внутри блока фигурных скобок.
В том же Gradle довольно удобно получается val kotlinCompile by tasks.existing и т.п.
Нечасто использую regexp, но каждый раз с ними в Kotlin проблема, т.к. обработать группы по-нормальному невозможно.
источник

с#

саша сок #KotlinGang... in Kotlin Community
Vladimir Sitnikov
Возмжоность совместного применения destructuring и делегатов обсуждалась?
Иными словами, деструктуризация на основе имён, а не она основе порядка.

В тех же regexp’ах было бы хорошо:

val (major: Int, minor: Int, patch: Int?) by Regex("(?<major>\d+).(?<minor>\d+)(?:.(?<patch>\d+))»).find(…)
ну ток что-то такое можно заделать
val result = Regex("...").find().wrap()
val major by result
val minor by result
val patch by result
источник

VS

Vladimir Sitnikov in Kotlin Community
саша сок #KotlinGang
ну ток что-то такое можно заделать
val result = Regex("...").find().wrap()
val major by result
val minor by result
val patch by result
оно-то так, но получается бесполезный result 😕
источник

с#

саша сок #KotlinGang... in Kotlin Community
Vladimir Sitnikov
оно-то так, но получается бесполезный result 😕
да)
источник

VS

Vladimir Sitnikov in Kotlin Community
У меня ещё такой код есть (https://github.com/burrunan/gradle-cache-action/blob/8fcfad28b47e9bbda97ae7c7112c49e485f5ffdf/wrappers/actions-core/src/main/kotlin/actions/core/ActionsEnvironment.kt#L38-L48):

val GITHUB_BASE_REF by Environment
   val GITHUB_SERVER_URL by Environment
   val GITHUB_API_URL by Environment
   val GITHUB_GRAPHQL_URL by Environment
   val RUNNER_OS by Environment
}

private object Environment {
   operator fun getValue(environment: Any, property: KProperty<*>): String =
       process.env[property.name] ?: throw ActionFailedException("${property.name} is not found in process.env")
}


Аналогичная ситуация, когда хотелось бы объявить кучу переменных, которые все однообразно получаются.
источник

BP

Bogdan Panchenko in Kotlin Community
саша сок #KotlinGang
ну ток что-то такое можно заделать
val result = Regex("...").find().wrap()
val major by result
val minor by result
val patch by result
Нужно сделать вот такую конструкцию val (v1, v3, v2) by object
источник

AN

Alexander Nozik in Kotlin Community
Bogdan Panchenko
Нужно сделать вот такую конструкцию val (v1, v3, v2) by object
Выглядит страшно
источник

с#

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

AL

Alexander Levin in Kotlin Community
Alexander Nozik
Выглядит страшно
Да вроде ничем не страшнее текущего позиционного решения визуально и с точки зрения практичности.
источник

AS

Andrey Stepankov in Kotlin Community
Bogdan Panchenko
Нужно сделать вот такую конструкцию val (v1, v3, v2) by object
Есть Pattern и Matcher, докидываем
operator fun Matcher.component1() = this.group(0)
И готово.
источник

AS

Andrey Stepankov in Kotlin Community
Но выглядит страшно. Да и сломать легко
источник

с#

саша сок #KotlinGang... in Kotlin Community
вопрос немного не в тему, норм делать документацию к библиотеке в гх вики ?)
источник

AL

Alexander Levin in Kotlin Community
Т.е. если иметь их оба в языке, то я предпочёл бы очень разные скобки для разного деструктурирования:


//Position-based
val [first, second, third] = someList

//Name-based
val (foo, bar) = someObject
//Effectively the same code
val (bar, foo) = someObject


Но к сожалению изначально позиционному деструктурированию отданы не те скобки для этого :(
источник