You signed in with another tab or window. Reload to refresh your session.You signed out in another tab or window. Reload to refresh your session.You switched accounts on another tab or window. Reload to refresh your session.Dismiss alert
Copy file name to clipboardExpand all lines: learning/code.md
+2-2Lines changed: 2 additions & 2 deletions
Display the source diff
Display the rich diff
Original file line number
Diff line number
Diff line change
@@ -6,7 +6,7 @@ sidebar_position: 24
6
6
7
7
## Приложения
8
8
*[JetBrains/kotlinconf-app](https://github.com/JetBrains/kotlinconf-app) - official KotlinConf application - backend, android, ios with shared code;
9
-
*[Kotlin/mpp-example](https://github.com/Kotlin/mpp-example) - official Multiplatform (android + ios) sample from JetBrains;
9
+
*[Kotlin/kmp-basic-sample](https://github.com/Kotlin/kmp-basic-sample) - official Multiplatform (android + ios) sample from JetBrains;
10
10
*[JetBrains/KotlinFinder](https://github.com/JetBrains/KotlinFinder) - official KotlinFinder application from JetBrains and IceRock for KotlinConf 2019 (android + ios)
11
11
*[touchlab/DroidconKotlin](https://github.com/touchlab/DroidconKotlin) - DroidCon conference application from TouchLab (android + ios);
12
12
*[SimonSchubert/Newsout](https://github.com/SimonSchubert/Newsout) - News application sample (android + ios) using database;
@@ -34,5 +34,5 @@ sidebar_position: 24
34
34
35
35
## Библиотеки
36
36
*<https://libs.kmp.icerock.dev>
37
-
*<https://www.kamp.ml>
37
+
*<https://klibs.io> — каталог KMP библиотек от JetBrains
Copy file name to clipboardExpand all lines: learning/kotlin/kotlin-init-cases.md
+6-6Lines changed: 6 additions & 6 deletions
Display the source diff
Display the rich diff
Original file line number
Diff line number
Diff line change
@@ -2,7 +2,7 @@
2
2
3
3
## Порядок инициализации при создании объекта класса
4
4
5
-
1. Объявление свойств, указанных в конструкторе класса и присвоение им значений;
5
+
1. Объявление свойств, указанных в конструкторе класса, и присвоение им значений;
6
6
2. Инициализация свойств в теле класса;
7
7
3. Выполнение кода в блоке init
8
8
*если свойств в теле класса и блоков init объявлено несколько, они инициализируются в том же порядке, в каком были объявлены*
@@ -32,7 +32,7 @@ class Person(val name: String) {
32
32
33
33
## Порядок инициализации вложенных и внутренних классов
34
34
35
-
Вложенные классы не имеют доступа к переменным внешнего класса. При создании экземпляра вложенного класса экземпляр внешнего класса (в котором объявлен вложенный), создан не будет.
35
+
Вложенные классы не имеют доступа к переменным внешнего класса. При создании экземпляра вложенного класса экземпляр внешнего класса (в котором объявлен вложенный) создан не будет.
36
36
37
37
Экземпляр внутреннего класса всегда хранит ссылку на экземпляр внешнего класса. Вначале создается экземпляр внешнего класса, а затем на его основе - экземпляр внутреннего класса
38
38
@@ -102,7 +102,7 @@ class Person {
102
102
Как и в предыдущем случае, компилятор не подсветит ошибку
При создании класса **Player** вначале происходит инициализация его класса-родителя GameObject, внутри которого создается объект класса **Bounds**. К моменту инициализации класса **Player** свойство **bounds** внутри класса-родителя уже проинициализировано значениями: x=1, y=2, которые были переданы в параметры конструктора **Player** и значениями ширины и высоты из родителя **GameObject** width=0.0, height=0.0
183
+
При создании класса **Player** вначале происходит инициализация его класса-родителя GameObject, внутри которого создается объект класса **Bounds**. К моменту инициализации класса **Player** свойство **bounds** внутри класса-родителя уже проинициализировано значениями: x=1, y=2, которые были переданы в параметры конструктора **Player**, и значениями ширины и высоты из родителя **GameObject** width=0.0, height=0.0
184
184
185
185
## Кейс, иллюстрирующий приоритет выполнения блока init перед вторичным конструктором
186
186
@@ -215,13 +215,13 @@ println(case.result)
215
215
Вернемся к иллюстрации:
216
216
[алгоритм](./init_algorhitm.png)
217
217
218
-
В процессе инициализации при создании экземпляра класса **ClassWithSecondaryConstructor** после вызова вторичного конструктора будет вызван основной конструктор класса + произойдет выполнение кода в его блоке *init* перед выполнением кода в теле вторичного конструктора. Такми образом, этот код
218
+
В процессе инициализации при создании экземпляра класса **ClassWithSecondaryConstructor** после вызова вторичного конструктора будет вызван основной конструктор класса + произойдет выполнение кода в его блоке *init* перед выполнением кода в теле вторичного конструктора. Таким образом, этот код
219
219
220
220
````kotlin
221
221
result +="not "
222
222
````
223
223
224
-
будет выполнен перед конкатенацией значений, переданных в параметры вторичного констуктора
224
+
будет выполнен перед конкатенацией значений, переданных в параметры вторичного конструктора
Copy file name to clipboardExpand all lines: learning/libraries/moko/moko-mvvm.md
+127-2Lines changed: 127 additions & 2 deletions
Display the source diff
Display the rich diff
Original file line number
Diff line number
Diff line change
@@ -4,9 +4,134 @@ sidebar_position: 3
4
4
5
5
# moko-mvvm
6
6
7
-
Библиотека [moko-mvvm](https://github.com/icerockdev/moko-mvvm) позволяет реализовывать приложения с паттерном
8
-
Model - View - ViewModel с ViewModel в общем коде.
7
+
Библиотека [moko-mvvm](https://github.com/icerockdev/moko-mvvm) предоставляет архитектурные компоненты Model-View-ViewModel для Kotlin Multiplatform. ViewModel работает в общем коде, на Android обеспечивается lifecycle-aware поведение через интеграцию с `androidx.lifecycle`.
8
+
9
+
## Возможности
10
+
11
+
-**ViewModel** — хранение и управление UI и данными с `viewModelScope` (CoroutineScope, отменяемый в `onCleared`)
0 commit comments