Size: a a a

Kotlin Community

2020 July 21

ГА

Георгий Авакян... in Kotlin Community
Andrew Mikhaylov
Это, конечно, не единственное, зачем они нужны, но если в это вникнуть и начать ими пользоваться, в будущем уже можно разобраться на вменяемом уровне.
ну я их так и юзал, спасибо!
источник

AM

Andrew Mikhaylov in Kotlin Community
Георгий Авакян
ну я их так и юзал, спасибо!
Ну так а что непонятного тогда?)
источник

AM

Andrew Mikhaylov in Kotlin Community
Как верно выше заметили, это просто иерархия типов с ограниченным набором подтипов.
источник

AM

Andrew Mikhaylov in Kotlin Community
За счёт ограничения появляется чудесное свойство с exhaustive when, которое я на примере выше описал.
источник

AM

Andrew Mikhaylov in Kotlin Community
Всё :)
источник

AM

Andrew Mikhaylov in Kotlin Community
Можно, конечно, удариться в измышления о том, что sealed class-ы позволяют эмулировать в котлине сумму типов, но я думаю, если вы уже 12341254125213 статей прочитали, вы это видели, и вернётесь к этому при надобности когда-нибудь в будущем. Об этом необязательно заморачиваться.
источник

I

Igor in Kotlin Community
Konstantin Dovnar
Или: это как совсем обычный класс, но с конечным числом наследников 🤔
ты сейчас объяснил реализацию (очень посредственную при этом), а не суть
источник

KZ

Konstantin Zolotov in Kotlin Community
Andrew Mikhaylov
Ну вот вы делаете в приложении рисование, и у вас есть ограниченный набор инструментов -- карандаш, ластик и прямоугольники. В нескольких местах вы принимаете инструмент и в зависимости от его типа выполняете действия -- в одном месте рисуете, во втором ввод принимаете. И будет у вас там чёь вроде
when(tool) {
   is Line -> canvas.drawLine(tool.start, tool.end)
   is Rect -> ...
   is Eraser -> ...
}


Основная фишка силдов -- если вы в when перечислили все ваши подтипы, с вас не потребуют else ->
Зато как только вы вдруг добавите кружочки -- вы сразу будете знать по ошибкам, где именно вам в коде эти кружочки надо обработать.

Как-то так.
Ага, главное только самому else не юзать)
источник

AM

Andrew Mikhaylov in Kotlin Community
Konstantin Zolotov
Ага, главное только самому else не юзать)
Ну само собой :)
источник

KD

Konstantin Dovnar in Kotlin Community
Igor
ты сейчас объяснил реализацию (очень посредственную при этом), а не суть
В чём суть кроме конечного числа наследников?
источник

I

Igor in Kotlin Community
Konstantin Dovnar
В чём суть кроме конечного числа наследников?
источник

KD

Konstantin Dovnar in Kotlin Community
Ой ну нет, я сюда не умные вещи пришёл читать.
источник

QH

Quantum Harmonizer in Kotlin Community
Konstantin Dovnar
В чём суть кроме конечного числа наследников?
А почему должно быть что-то кроме? Это всё. :)
источник

KD

Konstantin Dovnar in Kotlin Community
Quantum Harmonizer
А почему должно быть что-то кроме? Это всё. :)
Я к тому и веду. Но мне сказали, что суть не в этом, вот мне и стало интересно, что же там ещё такое.
источник

EF

Evgen Fil // 🎲 in Kotlin Community
Ребятки, кто экспериментировал с Multiplatform-проектами?
У меня тут при компиляции под linuxX64 проблемка, не гуглится:
e: /home/evgfilim1/Projects/untitled1/src/commonMain/kotlin/APIRequest.kt: (1, 8): Unresolved reference: io

Если что, ругается на строку import io.ktor.client.HttpClient
источник

BP

Bogdan Panchenko in Kotlin Community
Evgen Fil // 🎲
Ребятки, кто экспериментировал с Multiplatform-проектами?
У меня тут при компиляции под linuxX64 проблемка, не гуглится:
e: /home/evgfilim1/Projects/untitled1/src/commonMain/kotlin/APIRequest.kt: (1, 8): Unresolved reference: io

Если что, ругается на строку import io.ktor.client.HttpClient
А в гредле же все подключено ? Похоже что path не корректный к библиотекам
источник

EF

Evgen Fil // 🎲 in Kotlin Community
Bogdan Panchenko
А в гредле же все подключено ? Похоже что path не корректный к библиотекам
В сурс-сетах:

val commonMain by getting {
   languageSettings.apply {
       languageVersion = "1.3"
       apiVersion = "1.3"
   }

   dependencies {
       implementation(kotlin("stdlib-common"))
       implementation("io.ktor:ktor-client-core:1.3.2")
   }
}
источник

BP

Bogdan Panchenko in Kotlin Community
Evgen Fil // 🎲
В сурс-сетах:

val commonMain by getting {
   languageSettings.apply {
       languageVersion = "1.3"
       apiVersion = "1.3"
   }

   dependencies {
       implementation(kotlin("stdlib-common"))
       implementation("io.ktor:ktor-client-core:1.3.2")
   }
}
А там для common http не другой модуль ?
источник

EF

Evgen Fil // 🎲 in Kotlin Community
Bogdan Panchenko
А там для common http не другой модуль ?
источник

IO

Iaroslav Orlov in Kotlin Community
Evgen Fil // 🎲
В сурс-сетах:

val commonMain by getting {
   languageSettings.apply {
       languageVersion = "1.3"
       apiVersion = "1.3"
   }

   dependencies {
       implementation(kotlin("stdlib-common"))
       implementation("io.ktor:ktor-client-core:1.3.2")
   }
}
ktor-client-curl не хватает в нейтиве
источник