kotlin ΡΡΠΎ ΡΠ°ΠΊΠΎΠ΅ object
ΠΠ±ΡΠ΅ΠΊΡΠ½ΠΎ-ΠΎΡΠΈΠ΅Π½ΡΠΈΡΠΎΠ²Π°Π½Π½ΠΎΠ΅ ΠΏΡΠΎΠ³ΡΠ°ΠΌΠΌΠΈΡΠΎΠ²Π°Π½ΠΈΠ΅
ΠΠ»Π°ΡΡΡ ΠΈ ΠΎΠ±ΡΠ΅ΠΊΡΡ
Kotlin ΠΏΠΎΠ΄Π΄Π΅ΡΠΆΠΈΠ²Π°Π΅Ρ ΠΎΠ±ΡΠ΅ΠΊΡΠ½ΠΎ-ΠΎΡΠΈΠ΅Π½ΡΠΈΡΠΎΠ²Π°Π½Π½ΡΡ ΠΏΠ°ΡΠ°Π΄ΠΈΠ³ΠΌΡ ΠΏΡΠΎΠ³ΡΠ°ΠΌΠΌΠΈΡΠΎΠ²Π°Π½ΠΈΡ, Π° ΡΡΠΎ Π·Π½Π°ΡΠΈΡ, ΡΡΠΎ ΠΏΡΠΎΠ³ΡΠ°ΠΌΠΌΡ Π½Π° Π΄Π°Π½Π½ΠΎΠΌ ΡΠ·ΡΠΊΠ΅ ΠΌΠΎΠΆΠ½ΠΎ ΠΏΡΠ΅Π΄ΡΡΠ°Π²ΠΈΡΡ Π² Π²ΠΈΠ΄Π΅ Π²Π·Π°ΠΈΠΌΠΎΠ΄Π΅ΠΉΡΡΠ²ΡΡΡΠΈΡ ΠΌΠ΅ΠΆΠ΄Ρ ΡΠΎΠ±ΠΎΠΉ ΠΎΠ±ΡΠ΅ΠΊΡΠΎΠ².
ΠΠ»Π°ΡΡ ΡΠ°ΠΊΡΠΈΡΠ΅ΡΠΊΠΈ ΠΏΡΠ΅Π΄ΡΡΠ°Π²Π»ΡΠ΅Ρ Π½ΠΎΠ²ΡΠΉ ΡΠΈΠΏ Π΄Π°Π½Π½ΡΡ , ΠΏΠΎΡΡΠΎΠΌΡ ΠΌΡ ΠΌΠΎΠΆΠ΅ΠΌ ΠΎΠΏΡΠ΅Π΄Π΅Π»ΡΡΡ ΠΏΠ΅ΡΠ΅ΠΌΠ΅Π½Π½ΡΠ΅ ΡΡΠΎΠ³ΠΎ ΡΠΈΠΏΠ°:
Π ΡΡΠ½ΠΊΡΠΈΠΈ main ΠΎΠΏΡΠ΅Π΄Π΅Π»Π΅Π½Ρ ΡΡΠΈ ΠΏΠ΅ΡΠ΅ΠΌΠ΅Π½Π½ΡΡ ΡΠΈΠΏΠ° Person. Π‘ΡΠΎΠΈΡ ΡΠ°ΠΊΠΆΠ΅ ΠΎΡΠΌΠ΅ΡΠΈΡΡ, ΡΡΠΎ Π² ΠΎΡΠ»ΠΈΡΠΈΠ΅ ΠΎΡ Π΄ΡΡΠ³ΠΈΡ ΠΎΠ±ΡΠ΅ΠΊΡΠ½ΠΎ-ΠΎΡΠΈΠ΅Π½ΡΠΈΡΠΎΠ²Π°Π½Π½ΡΡ ΡΠ·ΡΠΊΠΎΠ² (ΠΊΠ°ΠΊ C# ΠΈΠ»ΠΈ Java), ΡΡΠ½ΠΊΡΠΈΡ main Π² Kotlin Π½Π΅ ΠΏΠΎΠΌΠ΅ΡΠ°Π΅ΡΡΡ Π² ΠΎΡΠ΄Π΅Π»ΡΠ½ΡΡ ΠΊΠ»Π°ΡΡ, Π° Π²ΡΠ΅Π³Π΄Π° ΠΎΠΏΡΠ΅Π΄Π΅Π»ΡΠ΅ΡΡΡ Π²Π½Π΅ ΠΊΠ°ΠΊΠΎΠ³ΠΎ-Π»ΠΈΠ±ΠΎ ΠΊΠ»Π°ΡΡΠ°.
ΠΠ»Ρ ΡΠΎΠ·Π΄Π°Π½ΠΈΡ ΠΎΠ±ΡΠ΅ΠΊΡΠ° ΠΊΠ»Π°ΡΡΠ° Π½Π΅ΠΎΠ±Ρ ΠΎΠ΄ΠΈΠΌΠΎ Π²ΡΠ·Π²Π°ΡΡ ΠΊΠΎΠ½ΡΡΡΡΠΊΡΠΎΡ Π΄Π°Π½Π½ΠΎΠ³ΠΎ ΠΊΠ»Π°ΡΡΠ°. ΠΠΎΠ½ΡΡΡΡΠΊΡΠΎΡ ΡΠ°ΠΊΡΠΈΡΠ΅ΡΠΊΠΈ ΠΏΡΠ΅Π΄ΡΡΠ°Π²Π»ΡΠ΅Ρ ΡΡΠ½ΠΊΡΠΈΡ, ΠΊΠΎΡΠΎΡΠ°Ρ Π½Π°Π·ΡΠ²Π°Π΅ΡΡΡ ΠΏΠΎ ΠΈΠΌΠ΅Π½ΠΈ ΠΊΠ»Π°ΡΡΠ° ΠΈ ΠΊΠΎΡΠΎΡΠ°Ρ Π²ΡΠΏΠΎΠ»Π½ΡΠ΅Ρ ΠΈΠ½ΠΈΡΠΈΠ°Π»ΠΈΠ·Π°ΡΠΈΡ ΠΎΠ±ΡΠ΅ΠΊΡΠ°. ΠΠΎ ΡΠΌΠΎΠ»ΡΠ°Π½ΠΈΡ Π΄Π»Ρ ΠΊΠ»Π°ΡΡΠ° ΠΊΠΎΠΌΠΏΠΈΠ»ΡΡΠΎΡ Π³Π΅Π½Π΅ΡΠΈΡΡΠ΅Ρ ΠΏΡΡΡΠΎΠΉ ΠΊΠΎΠ½ΡΡΡΡΠΊΡΠΎΡ, ΠΊΠΎΡΠΎΡΡΠΉ ΠΌΡ ΠΌΠΎΠΆΠ΅ΠΌ ΠΈΡΠΏΠΎΠ»ΡΠ·ΠΎΠ²Π°ΡΡ:
Π§Π°ΡΡΡ ΠΊΠΎΠ΄Π° ΠΏΠΎΡΠ»Π΅ Π·Π½Π°ΠΊΠ° ΡΠ°Π²Π½ΠΎ Person() ΠΊΠ°ΠΊ ΡΠ°Π· ΠΈ ΠΏΡΠ΅Π΄ΡΡΠ°Π²Π»ΡΠ΅Ρ Π²ΡΠ·ΠΎΠ² ΠΊΠΎΠ½ΡΡΡΡΠΊΡΠΎΡΠ°, ΠΊΠΎΡΠΎΡΡΠΉ ΡΠΎΠ·Π΄Π°Π΅Ρ ΠΎΠ±ΡΠ΅ΠΊΡ ΠΊΠ»Π°ΡΡΠ° Person. ΠΠΎ Π²ΡΠ·ΠΎΠ²Π° ΠΊΠΎΠ½ΡΡΡΡΠΊΡΠΎΡΠ° ΠΏΠ΅ΡΠ΅ΠΌΠ΅Π½Π½Π°Ρ ΠΊΠ»Π°ΡΡΠ° Π½Π΅ ΡΠΊΠ°Π·ΡΠ²Π°Π΅Ρ Π½ΠΈ Π½Π° ΠΊΠ°ΠΊΠΎΠΉ ΠΎΠ±ΡΠ΅ΠΊΡ.
ΠΠ°ΠΏΡΠΈΠΌΠ΅Ρ, ΡΠΎΠ·Π΄Π°Π΄ΠΈΠΌ ΡΡΠΈ ΠΎΠ±ΡΠ΅ΠΊΡΠ° ΠΊΠ»Π°ΡΡΠ° Person:
Π‘Π²ΠΎΠΉΡΡΠ²Π°
Π‘Π²ΠΎΠΉΡΡΠ²ΠΎ Π΄ΠΎΠ»ΠΆΠ½ΠΎ Π±ΡΡΡ ΠΈΠ½ΠΈΡΠΈΠ°Π»ΠΈΠ·ΠΈΡΠΎΠ²Π°Π½ΠΎ, ΡΠΎ Π΅ΡΡΡ ΠΎΠ±ΡΠ·Π°ΡΠ΅Π»ΡΠ½ΠΎ Π΄ΠΎΠ»ΠΆΠ½ΠΎ ΠΈΠΌΠ΅ΡΡ Π½Π°ΡΠ°Π»ΡΠ½ΠΎΠ΅ Π·Π½Π°ΡΠ΅Π½ΠΈΠ΅. ΠΠ°ΠΏΡΠΈΠΌΠ΅Ρ, ΠΎΠΏΡΠ΅Π΄Π΅Π»ΠΈΠΌ ΠΏΠ°ΡΡ ΡΠ²ΠΎΠΉΡΡΠ²:
Π Π΄Π°Π½Π½ΠΎΠΌ ΡΠ»ΡΡΠ°Π΅ Π² ΠΊΠ»Π°ΡΡΠ΅ Person, ΠΊΠΎΡΠΎΡΡΠΉ ΠΏΡΠ΅Π΄ΡΡΠ°Π²Π»ΡΠ΅Ρ ΡΠ΅Π»ΠΎΠ²Π΅ΠΊΠ°, ΠΎΠΏΡΠ΅Π΄Π΅Π»Π΅Π½Ρ ΡΠ²ΠΎΠΉΡΡΠ²Π° name (ΠΈΠΌΡ ΡΠ΅Π»ΠΎΠ²Π΅ΠΊΠ°) ΠΈ age (Π²ΠΎΠ·ΡΠ°ΡΡ ΡΠ΅Π»ΠΎΠ²Π΅ΠΊΠ°). Π ΡΡΠΈ ΡΠ²ΠΎΠΉΡΡΠ²Π° ΠΈΠ½ΠΈΡΠΈΠ°Π»ΠΈΠ·ΠΈΡΠΎΠ²Π°Π½Ρ Π½Π°ΡΠ°Π»ΡΠ½ΡΠΌΠΈ Π·Π½Π°ΡΠ΅Π½ΠΈΡΠΌΠΈ.
ΠΠ»Ρ ΠΎΠ±ΡΠ°ΡΠ΅Π½ΠΈΡ ΠΊ ΡΠ²ΠΎΠΉΡΡΠ²Π°ΠΌ ΠΈΡΠΏΠΎΠ»ΡΠ·ΡΠ΅ΡΡΡ ΠΈΠΌΡ ΠΏΠ΅ΡΠ΅ΠΌΠ΅Π½Π½ΠΎΠΉ, ΠΊΠΎΡΠΎΡΠ°Ρ ΠΏΡΠ΅Π΄ΡΡΠ²Π»ΡΠ΅Ρ ΠΎΠ±ΡΠ΅ΠΊΡ, ΠΈ ΠΏΠΎΡΠ»Π΅ ΡΠΎΡΠΊΠΈ ΡΠΊΠ°Π·ΡΠ²Π°Π΅ΡΡΡ ΠΈΠΌΡ ΡΠ²ΠΎΠΉΡΡΠ²Π°. ΠΠ°ΠΏΡΠΈΠΌΠ΅Ρ, ΠΏΠΎΠ»ΡΡΠ΅Π½ΠΈΠ΅ Π·Π½Π°ΡΠ΅Π½ΠΈΡ ΡΠ²ΠΎΠΉΡΡΠ²Π°:
Π£ΡΡΠ°Π½ΠΎΠ²ΠΊΠ° Π·Π½Π°ΡΠ΅Π½ΠΈΡ ΡΠ²ΠΎΠΉΡΡΠ²Π°:
Π€ΡΠ½ΠΊΡΠΈΠΈ ΠΊΠ»Π°ΡΡΠ°
ΠΠ»Π°ΡΡ ΡΠ°ΠΊΠΆΠ΅ ΠΌΠΎΠΆΠ΅Ρ ΡΠΎΠ΄Π΅ΡΠΆΠ°ΡΡ ΡΡΠ½ΠΊΡΠΈΠΈ. Π€ΡΠ½ΠΊΡΠΈΠΈ ΠΎΠΏΡΠ΅Π΄Π΅Π»ΡΡΡ ΠΏΠΎΠ²Π΅Π΄Π΅Π½ΠΈΠ΅ ΠΎΠ±ΡΠ΅ΠΊΡΠΎΠ² Π΄Π°Π½Π½ΠΎΠ³ΠΎ ΠΊΠ»Π°ΡΡΠ°. Π’Π°ΠΊΠΈΠ΅ ΡΡΠ½ΠΊΡΠΈΠΈ Π΅ΡΠ΅ Π½Π°Π·ΡΠ²Π°ΡΡ member functions ΠΈΠ»ΠΈ ΡΡΠ½ΠΊΡΠΈΠΈ-ΡΠ»Π΅Π½Ρ ΠΊΠ»Π°ΡΡΠ°. ΠΠ°ΠΏΡΠΈΠΌΠ΅Ρ, ΠΎΠΏΡΠ΅Π΄Π΅Π»ΠΈΠΌ ΠΊΠ»Π°ΡΡ Ρ ΡΡΠ½ΠΊΡΠΈΡΠΌΠΈ:
Π ΡΡΠ½ΠΊΡΠΈΡΡ , ΠΊΠΎΡΠΎΡΡΠ΅ ΠΎΠΏΡΠ΅Π΄Π΅Π»Π΅Π½Ρ Π²Π½ΡΡΡΠΈ ΠΊΠ»Π°ΡΡΠ°, Π΄ΠΎΡΡΡΠΏΠ½Ρ ΡΠ²ΠΎΠΉΡΡΠ²Π° ΡΡΠΎΠ³ΠΎ ΠΊΠ»Π°ΡΡΠ°. Π’Π°ΠΊ, Π² Π΄Π°Π½Π½ΠΎΠΌ ΡΠ»ΡΡΠ°Π΅ Π² ΡΡΠ½ΠΊΡΠΈΡΡ ΠΌΠΎΠΆΠ½ΠΎ ΠΎΠ±ΡΠ°ΡΠΈΡΡΡΡ ΠΊ ΡΠ²ΠΎΠΉΡΡΠ²Π°ΠΌ name ΠΈ age, ΠΊΠΎΡΠΎΡΡΠ΅ ΠΎΠΏΡΠ΅Π΄Π΅Π»Π΅Π½Ρ Π² ΠΊΠ»Π°ΡΡΠ΅ Person.
ΠΠ»Ρ ΠΎΠ±ΡΠ°ΡΠ΅Π½ΠΈΡ ΠΊ ΡΡΠ½ΠΊΡΠΈΡΠΌ ΠΊΠ»Π°ΡΡΠ° Π½Π΅ΠΎΠ±Ρ ΠΎΠ΄ΠΈΠΌΠΎ ΠΈΡΠΏΠΎΠ»ΡΠ·ΠΎΠ²Π°ΡΡ ΠΈΠΌΡ ΠΎΠ±ΡΠ΅ΠΊΡΠ°, ΠΏΠΎΡΠ»Π΅ ΠΊΠΎΡΠΎΡΠΎΠ³ΠΎ ΠΈΠ΄Π΅Ρ Π½Π°Π·Π²Π°Π½ΠΈΠ΅ ΡΡΠ½ΠΊΡΠΈΠΈ ΠΈ Π² ΡΠΊΠΎΠ±ΠΊΠ°Ρ Π·Π½Π°ΡΠ΅Π½ΠΈΡ Π΄Π»Ρ ΠΏΠ°ΡΠ°ΠΌΠ΅ΡΡΠΎΠ² ΡΡΠΎΠΉ ΡΡΠ½ΠΊΡΠΈΠΈ:
Kotlin. ΠΠ»ΡΡΠ΅Π²ΠΎΠ΅ ΡΠ»ΠΎΠ²ΠΎ object.
ΠΠ»ΡΡΠ΅Π²ΠΎΠ΅ ΡΠ»ΠΎΠ²ΠΎ object ΠΏΠΎΠ·Π²ΠΎΠ»ΡΠ΅Ρ ΠΎΠ΄Π½ΠΎΠ²ΡΠ΅ΠΌΠ΅Π½Π½ΠΎ ΠΎΠ±ΡΡΠ²ΠΈΡΡ ΠΊΠ»Π°ΡΡ ΠΈ ΡΠΎΠ·Π΄Π°ΡΡ Π΅Π³ΠΎ ΡΠΊΠ·Π΅ΠΌΠΏΠ»ΡΡ (ΠΈΠ»ΠΈ Π΄ΡΡΠ³ΠΈΠΌΠΈ ΡΠ»ΠΎΠ²Π°ΠΌΠΈ, ΠΎΠ±ΡΠ΅ΠΊΡ). ΠΡΠΈ ΡΡΠΎΠΌ ΠΈΡΠΏΠΎΠ»ΡΠ·ΠΎΠ²Π°ΡΡ Π΅Π³ΠΎ ΠΌΠΎΠΆΠ½ΠΎ ΠΏΠΎ-ΡΠ°Π·Π½ΠΎΠΌΡ:
ΠΠ±ΡΡΠ²Π»Π΅Π½ΠΈΠ΅ ΠΎΠ±ΡΠ΅ΠΊΡΠ°
ΠΠ°Π²Π΅ΡΠ½ΡΠΊΠ° Π²Π°ΠΌ ΠΏΡΠΈΡ ΠΎΠ΄ΠΈΠ»ΠΎΡΡ Ρ ΠΎΡΡ ΡΠ°Π· ΡΠΎΠ·Π΄Π°Π²Π°ΡΡ ΡΠ°ΠΊΠΎΠΉ ΠΊΠ»Π°ΡΡ, ΠΊΠΎΡΠΎΡΡΠΉ Π΄ΠΎΠ»ΠΆΠ΅Π½ ΡΡΡΠ΅ΡΡΠ²ΠΎΠ²Π°ΡΡ Π² ΠΎΠ΄Π½ΠΎΠΌ ΡΠΊΠ·Π΅ΠΌΠΏΠ»ΡΡΠ΅. ΠΠ±ΡΡΠ½ΠΎ ΡΡΠΎ ΡΠ΅Π°Π»ΠΈΠ·ΡΠ΅ΡΡΡ ΠΏΡΠΈ ΠΏΠΎΠΌΠΎΡΠΈ ΠΏΠ°ΡΡΠ΅ΡΠ½Π° ΠΏΡΠΎΠ΅ΠΊΡΠΈΡΠΎΠ²Π°Π½ΠΈΡ ΡΠΈΠ½Π³Π»ΡΠΎΠ½. Π Kotlin ΠΆΠ΅ ΠΏΡΠ΅Π΄Π»Π°Π³Π°Π΅ΡΡΡ ΠΈΡΠΏΠΎΠ»ΡΠ·ΠΎΠ²Π°ΡΡ ΠΎΠ±ΡΡΠ²Π»Π΅Π½ΠΈΠ΅ ΠΎΠ±ΡΠ΅ΠΊΡΠ°, ΠΊΠΎΡΠΎΡΠΎΠ΅ ΠΎΠ΄Π½ΠΎΠ²ΡΠ΅ΠΌΠ΅Π½Π½ΠΎ ΡΠΎΡΠ΅ΡΠ°Π΅Ρ Π² ΡΠ΅Π±Π΅ ΠΈ ΠΎΠ±ΡΡΠ²Π»Π΅Π½ΠΈΠ΅ ΠΊΠ»Π°ΡΡΠ°, ΠΈ ΡΠΎΠ·Π΄Π°Π½ΠΈΠ΅ Π΅Π³ΠΎ Π΅Π΄ΠΈΠ½ΡΡΠ²Π΅Π½Π½ΠΎΠ³ΠΎ ΡΠΊΠ·Π΅ΠΌΠΏΠ»ΡΡΠ°.
ΠΠ±ΡΠ΅ΠΊΡΡ ΠΌΠΎΠΆΠ½ΠΎ ΠΎΠ±ΡΡΠ²Π»ΡΡΡ Π²Π½ΡΡΡΠΈ ΠΊΠ»Π°ΡΡΠ°. Π’Π°ΠΊΠΈΠ΅ ΠΎΠ±ΡΠ΅ΠΊΡΡ ΡΠΎΠΆΠ΅ ΡΡΡΠ΅ΡΡΠ²ΡΡΡ Π² Π΅Π΄ΠΈΠ½ΡΡΠ²Π΅Π½Π½ΠΎΠΌ ΡΠΊΠ·Π΅ΠΌΠΏΠ»ΡΡΠ΅, Ρ.Π΅. Ρ Π»ΡΠ±ΠΎΠ³ΠΎ ΡΠΊΠ·Π΅ΠΌΠΏΠ»ΡΡΠ° ΠΊΠ»Π°ΡΡΠ° Π±ΡΠ΄Π΅Ρ ΠΎΠ΄ΠΈΠ½ ΠΈ ΡΠΎΡ ΠΆΠ΅ ΡΠΊΠ·Π΅ΠΌΠΏΠ»ΡΡ ΠΎΠ±ΡΠ΅ΠΊΡΠ°.
ΠΠ±ΡΠ΅ΠΊΡ-ΠΊΠΎΠΌΠΏΠ°Π½ΡΠΎΠ½ (Companion Object)
ΠΠ°ΠΊ ΠΏΡΠ°Π²ΠΈΠ»ΠΎ ΠΎΠ±ΡΠ΅ΠΊΡΡ-ΠΊΠΎΠΌΠΏΠ°Π½ΡΠΎΠ½Ρ ΠΈΡΠΏΠΎΠ»ΡΠ·ΡΡΡΡΡ Π΄Π»Ρ ΠΎΠ±ΡΡΠ²Π»Π΅Π½ΠΈΡ ΠΏΠ΅ΡΠ΅ΠΌΠ΅Π½Π½ΡΡ ΠΈ ΡΡΠ½ΠΊΡΠΈΠΉ, ΠΊ ΠΊΠΎΡΠΎΡΡΠΌ ΡΡΠ΅Π±ΡΠ΅ΡΡΡ ΠΎΠ±ΡΠ°ΡΠ°ΡΡΡΡ Π±Π΅Π· ΡΠΎΠ·Π΄Π°Π½ΠΈΡ ΡΠΊΠ·Π΅ΠΌΠΏΠ»ΡΡΠ° ΠΊΠ»Π°ΡΡΠ°. ΠΠΈΠ±ΠΎ Π΄Π»Ρ ΠΎΠ±ΡΡΠ²Π»Π΅Π½ΠΈΡ ΠΊΠΎΠ½ΡΡΠ°Π½Ρ. ΠΠΎ ΡΡΡΠΈ ΠΎΠ½ΠΈ ΡΠ²ΠΎΠ΅Π³ΠΎ ΡΠΎΠ΄Π° Π·Π°ΠΌΠ΅Π½Π° ΡΡΠ°ΡΠΈΡΠ΅ΡΠΊΠΈΠΌ ΡΠ»Π΅Π½Π°ΠΌ ΠΊΠ»Π°ΡΡΠ° (Π² ΠΎΡΠ»ΠΈΡΠΈΠ΅ ΠΎΡ Java, Π² Kotlin Π½Π΅Ρ ΡΡΠ°ΡΠΈΠΊΠΈ).
ΠΠ±ΡΠ΅ΠΊΡ-Π²ΡΡΠ°ΠΆΠ΅Π½ΠΈΠ΅
ΠΡΠΈ ΡΠ°Π·ΡΠ°Π±ΠΎΡΠΊΠ΅ ΠΏΡΠΈΠ»ΠΎΠΆΠ΅Π½ΠΈΠΉ Π°Π½ΠΎΠ½ΠΈΠΌΠ½ΡΠΉ ΠΎΠ±ΡΠ΅ΠΊΡ ΡΠ°ΡΠ΅ Π²ΡΠ΅Π³ΠΎ ΠΈΡΠΏΠΎΠ»ΡΠ·ΡΠ΅ΡΡΡ Π΄Π»Ρ ΡΠ΅Π°Π»ΠΈΠ·Π°ΡΠΈΠΈ ΠΎΠ±ΡΠ°Π±ΠΎΡΡΠΈΠΊΠ° ΡΠΎΠ±ΡΡΠΈΠΉ (ΠΊΠ»ΠΈΠΊΠΈ ΠΏΠΎ ΠΊΠΎΠΌΠΏΠΎΠ½Π΅Π½ΡΠ°ΠΌ ΡΠΊΡΠ°Π½Π°).
Π Π΄Π°Π½Π½ΠΎΠΌ ΠΏΡΠΈΠΌΠ΅ΡΠ΅ ΡΠΎΠ·Π΄Π°ΡΡΡΡ ΠΎΠ±ΡΠ΅ΠΊΡ, ΠΊΠΎΡΠΎΡΡΠΉ ΡΠ΅Π°Π»ΠΈΠ·ΡΠ΅Ρ ΠΈΠ½ΡΠ΅ΡΡΠ΅ΠΉΡ View.OnClickListener ΠΈ ΠΏΠ΅ΡΠ΅Π΄Π°ΡΡΡΡ ΡΡΠ½ΠΊΡΠΈΠΈ setOnClickListener() Π² ΠΊΠ°ΡΠ΅ΡΡΠ²Π΅ ΠΏΠ°ΡΠ°ΠΌΠ΅ΡΡΠ°. ΠΡΠΎΡ ΠΏΠ°ΡΠ°ΠΌΠ΅ΡΡ ΠΈ ΡΠ²Π»ΡΠ΅ΡΡΡ ΠΎΠ±ΡΠ΅ΠΊΡΠΎΠΌ-Π²ΡΡΠ°ΠΆΠ΅Π½ΠΈΠ΅ΠΌ.
ΠΠ±ΡΠ°ΡΠΈΡΠ΅ Π²Π½ΠΈΠΌΠ°Π½ΠΈΠ΅, ΡΡΠΎ Π΄Π»Ρ ΠΎΠ±ΡΠ΅ΠΊΡΠ°-Π²ΡΡΠ°ΠΆΠ΅Π½ΠΈΡ Π½Π΅ ΡΠΊΠ°Π·ΡΠ²Π°Π΅ΡΡΡ ΠΈΠΌΡ. ΠΠ°ΡΠ΅ΠΌ ΠΎΠ½ΠΎ Π΅ΠΌΡ, Π΅ΡΠ»ΠΈ ΠΎΠ±ΡΠ΅ΠΊΡ ΠΏΡΠΎΡΡΠΎ ΠΏΠ΅ΡΠ΅Π΄Π°Π΅ΡΡΡ ΡΡΠ½ΠΊΡΠΈΠΈ Π² ΠΊΠ°ΡΠ΅ΡΡΠ²Π΅ ΠΏΠ°ΡΠ°ΠΌΠ΅ΡΡΠ°?
ΠΡΠ»ΠΈ ΠΆΠ΅ ΠΎΠ±ΡΠ΅ΠΊΡΡ Π²ΡΡ ΡΠ°ΠΊΠΈ ΡΡΠ΅Π±ΡΠ΅ΡΡΡ ΠΈΠΌΡ, ΡΠΎ Π΅Π³ΠΎ ΠΌΠΎΠΆΠ½ΠΎ ΡΠΎΡ ΡΠ°Π½ΠΈΡΡ Π² ΠΏΠ΅ΡΠ΅ΠΌΠ΅Π½Π½ΠΎΠΉ.
Π ΠΎΠ±ΡΠ΅ΠΊΡΠ΅-Π²ΡΡΠ°ΠΆΠ΅Π½ΠΈΠΈ ΠΌΠΎΠΆΠ½ΠΎ ΠΎΠ±ΡΠ°ΡΠ°ΡΡΡΡ ΠΊ ΠΏΠ΅ΡΠ΅ΠΌΠ΅Π½Π½ΡΠΌ, ΠΊΠΎΡΠΎΡΡΠ΅ Π½Π°Ρ ΠΎΠ΄ΡΡΡΡ Π² ΡΠΎΠΉ ΠΆΠ΅ ΡΡΠ½ΠΊΡΠΈΠΈ, Π² ΠΊΠΎΡΠΎΡΠΎΠΉ Π±ΡΠ» ΡΠΎΠ·Π΄Π°Π½ Π°Π½ΠΎΠ½ΠΈΠΌΠ½ΡΠΉ ΠΎΠ±ΡΠ΅ΠΊΡ.
ΠΠ½ΠΎΠ½ΠΈΠΌΠ½ΡΠΉ ΠΎΠ±ΡΠ΅ΠΊΡ ΠΌΠΎΠΆΠ΅Ρ ΡΠ΅Π°Π»ΠΈΠ·ΠΎΠ²ΡΠ²Π°ΡΡ Π½Π΅ΡΠΊΠΎΠ»ΡΠΊΠΎ ΠΈΠ½ΡΠ΅ΡΡΠ΅ΠΉΡΠΎΠ², ΡΠΎΠ³Π΄Π° ΠΎΠ½ΠΈ ΠΏΠ΅ΡΠ΅ΡΠΈΡΠ»ΡΡΡΡΡ ΡΠ΅ΡΠ΅Π· Π·Π°ΠΏΡΡΡΡ. Π ΠΌΠΎΠΆΠ΅Ρ ΠΈ Π²ΠΎΠ²ΡΠ΅ Π½Π΅ ΡΠ΅Π°Π»ΠΈΠ·ΠΎΠ²ΡΠ²Π°ΡΡ Π½ΠΈ ΠΎΠ΄ΠΈΠ½.
ΠΠ±ΡΠ°ΡΠΈΡΠ΅ Π²Π½ΠΈΠΌΠ°Π½ΠΈΠ΅, ΡΡΠΎ Π°Π½ΠΎΠ½ΠΈΠΌΠ½ΡΠ΅ ΠΎΠ±ΡΠ΅ΠΊΡΡ Π½Π΅ ΡΠ²Π»ΡΡΡΡΡ ΡΠΈΠ½Π³Π»ΡΠΎΠ½Π°ΠΌΠΈ. ΠΠ°ΠΆΠ΄ΡΠΉ ΡΠ°Π· ΠΏΡΠΈ Π²ΡΠΏΠΎΠ»Π½Π΅Π½ΠΈΠΈ ΠΎΠ±ΡΠ΅ΠΊΡΠ°-Π²ΡΡΠ°ΠΆΠ΅Π½ΠΈΡ ΡΠΎΠ·Π΄Π°ΡΡΡΡ Π½ΠΎΠ²ΡΠΉ ΠΎΠ±ΡΠ΅ΠΊΡ.
ΠΠΎΠ»Π΅Π·Π½ΡΠ΅ ΡΡΡΠ»ΠΊΠΈ
Object expressions and declarations
Sometimes you need to create an object that is a slight modification of some class, without explicitly declaring a new subclass for it. Kotlin can handle this with object expressions and object declarations.
Object expressions
Object expressions create objects of anonymous classes, that is, classes that aren’t explicitly declared with the class declaration. Such classes are useful for one-time use. You can define them from scratch, inherit from existing classes, or implement interfaces. Instances of anonymous classes are also called anonymous objects because they are defined by an expression, not a name.
Creating anonymous objects from scratch
Object expressions start with the object keyword.
If you just need an object that doesnΠ²Π™t have any nontrivial supertypes, write its members in curly braces after object :
Inheriting anonymous objects from supertypes
To create an object of an anonymous class that inherits from some type (or types), specify this type after object and a colon ( : ). Then implement or override the members of this class as if you were inheriting from it:
If a supertype has a constructor, pass appropriate constructor parameters to it. Multiple supertypes can be specified as a comma-delimited list after the colon:
Using anonymous objects as return and value types
When an anonymous object is used as a type of a local or private but not inline declaration (function or property), all its members are accessible via this function or property:
If this function or property is public or private inline, its actual type is:
Any if the anonymous object doesn’t have a declared supertype
The declared supertype of the anonymous object, if there is exactly one such type
The explicitly declared type if there is more than one declared supertype
In all these cases, members added in the anonymous object are not accessible. Overridden members are accessible if they are declared in the actual type of the function or property:
Accessing variables from anonymous objects
The code in object expressions can access variables from the enclosing scope:
Object declarations
The Singleton pattern can be useful in several cases, and Kotlin makes it easy to declare singletons:
This is called an object declaration, and it always has a name following the object keyword. Just like a variable declaration, an object declaration is not an expression, and it cannot be used on the right-hand side of an assignment statement.
The initialization of an object declaration is thread-safe and done on first access.
To refer to the object, use its name directly:
Such objects can have supertypes:
Object declarations can’t be local (that is, they can’t be nested directly inside a function), but they can be nested into other object declarations or non-inner classes.
Companion objects
An object declaration inside a class can be marked with the companion keyword:
Members of the companion object can be called simply by using the class name as the qualifier:
The name of the companion object can be omitted, in which case the name Companion will be used:
Class members can access the private members of the corresponding companion object.
The name of a class used by itself (not as a qualifier to another name) acts as a reference to the companion object of the class (whether named or not):
Note that even though the members of companion objects look like static members in other languages, at runtime those are still instance members of real objects, and can, for example, implement interfaces:
However, on the JVM you can have members of companion objects generated as real static methods and fields if you use the @JvmStatic annotation. See the Java interoperability section for more detail.
Semantic difference between object expressions and declarations
There is one important semantic difference between object expressions and object declarations:
Object expressions are executed (and initialized) immediately, where they are used.
Object declarations are initialized lazily, when accessed for the first time.
A companion object is initialized when the corresponding class is loaded (resolved) that matches the semantics of a Java static initializer.
ΠΠ±ΡΠ΅ΠΊΡ Π² Kotlin ΠΈ ΠΏΠ°ΡΡΠ΅ΡΠ½ Β«ΠΠ΄ΠΈΠ½ΠΎΡΠΊΠ°Β»


ΠΠ±ΡΠ΅ΠΊΡ Π² Kotlin ΠΈ ΠΏΠ°ΡΡΠ΅ΡΠ½ Β«ΠΠ΄ΠΈΠ½ΠΎΡΠΊΠ°Β»
Π‘Π΅Π³ΠΎΠ΄Π½Ρ Π²Ρ ΠΈΠ·ΡΡΠΈΡΠ΅, ΠΊΠ°ΠΊ ΠΈΡΠΏΠΎΠ»ΡΠ·ΠΎΠ²Π°ΡΡ ΠΊΠ»ΡΡΠ΅Π²ΠΎΠ΅ ΡΠ»ΠΎΠ²ΠΎ object Π² Kotlin Π΄Π»Ρ ΠΎΠΏΡΠ΅Π΄Π΅Π»Π΅Π½ΠΈΡ ΠΎΠ΄ΠΈΠ½ΠΎΡΠ½ΡΡ , ΡΠΎΠΏΡΡΡΡΠ²ΡΡΡΠΈΡ ΠΈ Π°Π½ΠΎΠ½ΠΈΠΌΠ½ΡΡ ΠΎΠ±ΡΠ΅ΠΊΡΠΎΠ² ΠΈ ΠΎΠ±Π΅ΡΠΏΠ΅ΡΠ΅Π½ΠΈΡ Π²Π·Π°ΠΈΠΌΠΎΠ΄Π΅ΠΉΡΡΠ²ΠΈΡ Ρ Java.
ΠΡΠ°ΠΊ, Π½Π°ΡΠ½Π΅ΠΌ
ΠΡΠΊΡΠΎΠΉΡΠ΅ ΡΠ²ΠΎΠΉ ΠΏΡΠΎΠ΅ΠΊΡ Π² Android Studio 4.1 ΠΈΠ»ΠΈ Π²ΡΡΠ΅. ΠΡΠ±Π΅ΡΠΈΡΠ΅ Β«Open an Existing ProjectΒ», Π° Π·Π°ΡΠ΅ΠΌ Π²ΡΠ±Π΅ΡΠΈΡΠ΅ ΠΈΠΌΡ Π½Π°ΡΠ°Π»ΡΠ½ΠΎΠ³ΠΎ ΠΏΡΠΎΠ΅ΠΊΡΠ°.
ΠΡΠΊΡΡΠ² ΡΡΠ°ΡΡΠΎΠ²ΡΠΉ ΠΏΡΠΎΠ΅ΠΊΡ, Π²Ρ ΠΎΠ±Π½Π°ΡΡΠΆΠΈΡΠ΅ ΡΠ°ΠΌ ΡΠΆΠ΅ Π½Π΅ΠΊΡΡ ΡΡΡΡΠΊΡΡΡΡ:
ΠΠ°Π»Π΅Π΅ ΡΠΎΠ±Π΅ΡΠΈΡΠ΅ ΠΈ Π·Π°ΠΏΡΡΡΠΈΡΠ΅ ΠΏΡΠΎΠ΅ΠΊΡ. ΠΡ ΡΠ²ΠΈΠ΄ΠΈΡΠ΅ ΡΠΊΡΠ°Π½ Ρ ΡΠ°Π·Π½ΠΎΠΎΠ±ΡΠ°Π·Π½ΡΠΌΠΈ Android- ΡΠ΅ΠΌΠ°ΡΠΈΡΠ΅ΡΠΊΠΈΠΌΠΈ ΠΏΡΠΎΠ΄ΡΠΊΡΠ°ΠΌΠΈ Π΄Π»Ρ ΠΏΡΠΎΠ΄Π°ΠΆΠΈ:
Π’Π΅ΠΌ Π½Π΅ ΠΌΠ΅Π½Π΅Π΅ Π²Ρ ΠΏΠΎΠΊΠ° Π½ΠΈΡΠ΅Π³ΠΎ Π½Π΅ ΠΌΠΎΠΆΠ΅ΡΠ΅ ΠΊΡΠΏΠΈΡΡ. ΠΡΠΎΠ΄ΠΎΠ»ΠΆΠ°ΠΉΡΠ΅ ΡΡΠ΅Π½ΠΈΠ΅, ΡΡΠΎΠ±Ρ Π΄ΠΎΠ±Π°Π²ΠΈΡΡ Π²ΠΎΠ·ΠΌΠΎΠΆΠ½ΠΎΡΡΡ ΠΏΠΎΠΊΡΠΏΠΎΠΊ, ΠΏΠ°ΡΠ°Π»Π»Π΅Π»ΡΠ½ΠΎ ΠΈΠ·ΡΡΠ°Ρ ΡΠΏΠΎΡΠΎΠ±Ρ ΠΈΡΠΏΠΎΠ»ΡΠ·ΠΎΠ²Π°Π½ΠΈΡ object Π² Kotlin.
ΠΡΠΏΠΎΠ»ΡΠ·ΠΎΠ²Π°Π½ΠΈΠ΅ ΡΠΈΠ½Π³Π»ΠΎΡΠΎΠ½ΠΎΠ² (ΠΎΠ΄ΠΈΠ½ΠΎΡΠ΅ΠΊ) Π² Kotlin
ΠΡΠΏΠΎΠ»ΡΠ·ΡΡ ΡΠ»ΠΎΠ²ΠΎ object Π² ΠΏΡΠΈΠ»ΠΎΠΆΠ΅Π½ΠΈΠΈ, Π²Ρ ΠΎΠΏΡΠ΅Π΄Π΅Π»ΡΠ΅ΡΠ΅ ΡΠΈΠ½Π³Π»ΡΠΎΠ½ (ΠΎΠ΄ΠΈΠ½ΠΎΡΠΊΡ). ΠΠ΄ΠΈΠ½ΠΎΡΠΊΠ° β ΡΡΠΎ ΡΠ°Π±Π»ΠΎΠ½ ΠΏΡΠΎΠ΅ΠΊΡΠΈΡΠΎΠ²Π°Π½ΠΈΡ, Π² ΠΊΠΎΡΠΎΡΠΎΠΌ Π΄Π°Π½Π½ΡΠΉ ΠΊΠ»Π°ΡΡ ΠΈΠΌΠ΅Π΅Ρ ΡΠΎΠ»ΡΠΊΠΎ ΠΎΠ΄ΠΈΠ½ ΡΠΊΠ·Π΅ΠΌΠΏΠ»ΡΡ Π²Π½ΡΡΡΠΈ Π²ΡΠ΅Π³ΠΎ ΠΏΡΠΈΠ»ΠΎΠΆΠ΅Π½ΠΈΡ.
ΠΠ΄ΠΈΠ½ΠΎΡΠΊΠ° ΡΠ°ΡΠ΅ Π²ΡΠ΅Π³ΠΎ ΠΏΡΠΈΠΌΠ΅Π½ΡΠ΅ΡΡΡ:
ΠΠ΅ΡΠΆΠΈΡΠ΅ Π² ΡΠΌΠ΅, ΡΡΠΎ ΠΎΠ΄ΠΈΠ½ΠΎΡΠΊΠΈ Π½Π΅ ΡΠ΅ΡΠ΅Π½ΠΈΠ΅ ΠΏΠΎ Ρ ΡΠ°Π½Π΅Π½ΠΈΡ Π΄Π°Π½Π½ΡΡ . ΠΠ°Π½Π½ΡΠ΅ Π² Π½ΠΈΡ ΠΆΠΈΠ²ΡΡ ΡΠΎΠ»ΡΠΊΠΎ ΠΏΠΎΠΊΠ° ΠΆΠΈΠ²ΠΎ Π²Π°ΡΠ΅ ΠΏΡΠΈΠ»ΠΎΠΆΠ΅Π½ΠΈΠ΅ Π² ΠΏΠ°ΠΌΡΡΠΈ.
Π§ΠΈΡΠ°ΠΉΡΠ΅ Π΄Π°Π»Π΅Π΅, ΠΊΠ°ΠΊ ΠΎΠΏΡΠ΅Π΄Π΅Π»ΠΈΡΡ ΡΠΈΠ½Π³Π»ΡΠΎΠ½!
ΠΡΠΏΠΎΠ»ΡΠ·ΠΎΠ²Π°Π½ΠΈΠ΅ Object Π΄Π»Ρ ΠΎΠΏΡΠ΅Π΄Π΅Π»Π΅Π½ΠΈΡ ΡΠΈΠ½Π³Π»ΡΠΎΠ½Π° ΠΊΠΎΡΠ·ΠΈΠ½Ρ ΠΏΠΎΠΊΡΠΏΠΎΠΊ
ΠΠ° Π΄Π°Π½Π½ΡΠΉ ΠΌΠΎΠΌΠ΅Π½Ρ Π½Π΅Ρ ΡΠΏΠΎΡΠΎΠ±Π° Π΄ΠΎΠ±Π°Π²ΠΈΡΡ ΠΏΡΠ΅Π΄ΠΌΠ΅ΡΡ Π² Π²Π°ΡΡ ΡΠ΅Π»Π΅ΠΆΠΊΡ ΠΈ ΠΎΡΠΎΠ±ΡΠ°Π·ΠΈΡΡ Π² ΠΏΡΠΈΠ»ΠΎΠΆΠ΅Π½ΠΈΠΈ. ΠΠ»Ρ ΠΎΡΡΡΠ΅ΡΡΠ²Π»Π΅Π½ΠΈΡ Π·Π°ΡΠ΅ΠΈ Π½Π΅ΠΎΠ±Ρ ΠΎΠ΄ΠΈΠΌΠΎ ΠΌΠ΅ΡΡΠΎ Π΄Π»Ρ ΠΏΠΎΠΌΠ΅ΡΠ΅Π½ΠΈΡ ΠΈΠ½ΡΠΎΡΠΌΠ°ΡΠΈΠΈ ΠΈ ΡΠΏΠΎΡΠΎΠ± ΠΏΠΎΠ΄Π΅Π»ΠΈΡΡΡΡ Π΅ΠΉ Π½Π° Π΄ΡΡΠ³ΠΈΡ ΡΠΊΡΠ°Π½Π°Ρ ΠΏΡΠΈΠ»ΠΎΠΆΠ΅Π½ΠΈΡ.
Android Studio ΡΠΎΠ·Π΄Π°ΡΡ ΡΠ°ΠΉΠ» Ρ ΠΏΡΡΡΡΠΌ object Π΄Π»Ρ Π²Π°Ρ. ΠΡΠΎ Π±ΡΠ΄Π΅Ρ Π²ΡΠ³Π»ΡΠ΄Π΅ΡΡ ΡΠ°ΠΊ:
ΠΡ ΠΌΠΎΠΆΠ΅ΡΠ΅ ΠΌΠ½ΠΎΠ³ΠΎΠ΅ ΡΠ·Π½Π°ΡΡ ΠΎΠ± ΡΡΠΎΠΉ ΡΠ°Π·Π½ΠΈΡΠ΅, ΠΏΠΎΡΠΌΠΎΡΡΠ΅Π² Π½Π° ΡΠΊΠ²ΠΈΠ²Π°Π»Π΅Π½ΡΠ½ΡΠΉ ΠΊΠΎΠ΄ Java. Π ΡΡΠ°ΡΡΡΡ Π΄Π»Ρ Π²Π°Ρ, Π² Android Studio Π΅ΡΡΡ ΡΠΏΠΎΡΠΎΠ± ΡΠ΄Π΅Π»Π°ΡΡ ΡΡΠΎ.
ΠΠ΅ΡΠ΅ΠΉΠ΄ΠΈΡΠ΅ Π² Tools βΈ Kotlin βΈ Show Kotlin Bytecode ΠΈ Π½Π°ΠΆΠΌΠΈΡΠ΅ ΠΊΠ½ΠΎΠΏΠΊΡ Decompile Π² Π²Π΅ΡΡ Π½Π΅ΠΉ ΡΠ°ΡΡΠΈ ΠΎΠΊΠ½Π° Kotlin Bytecode. ΠΡ ΡΠ²ΠΈΠ΄ΠΈΡΠ΅ ΡΡΠΎ-ΡΠΎ Π²ΡΠΎΠ΄Π΅ ΡΠ»Π΅Π΄ΡΡΡΠ΅Π³ΠΎ:
ΠΠ° ΡΡΠΎ ΠΎΠ±ΡΠ°ΡΠΈΡΡ Π²Π½ΠΈΠΌΠ°Π½ΠΈΠ΅:
ΠΠΎΠΌΠ½ΠΈΡΠ΅ ΠΎΠ± ΡΡΠΎΠΌ, ΠΊΠΎΠ³Π΄Π° ΠΏΡΡΠ°Π΅ΡΠ΅ΡΡ ΠΈΡΠΏΠΎΠ»ΡΠ·ΠΎΠ²Π°ΡΡ Kotlin Π²ΠΌΠ΅ΡΡΠ΅ Ρ Java!
Π‘ΠΎΠ·Π΄Π°Π½ΠΈΠ΅ ΠΏΡΠ±Π»ΠΈΡΠ½ΠΎΠ³ΠΎ ΠΈΠ½ΡΠ΅ΡΡΠ΅ΠΉΡΠ° ΡΠΈΠ½Π³Π»ΡΠΎΠ½Π°
Π’Π΅ΠΏΠ΅ΡΡ, ΡΠΎΠ·Π΄Π°Π² ΡΠΈΠ½Π³Π»ΡΠΎΠ½, Π½Π΅ΠΎΠ±Ρ ΠΎΠ΄ΠΈΠΌΠΎ ΡΠΎΠ·Π΄Π°ΡΡ Π΅Π³ΠΎ ΠΏΡΠ±Π»ΠΈΡΠ½ΡΠΉ ΠΈΠ½ΡΠ΅ΡΡΠ΅ΠΉΡ, ΡΡΠΎΠ±Ρ Π΄ΡΡΠ³ΠΈΠ΅ ΠΊΠ»Π°ΡΡΡ ΠΌΠΎΠ³Π»ΠΈ ΠΎΠ±ΡΠ°ΡΡΡΡ Ρ Π½ΠΈΠΌ. ΠΠ»Ρ ΡΡΠΎΠ³ΠΎ Π΄ΠΎΠ±Π°Π²ΡΡΠ΅ ΡΠ»Π΅Π΄ΡΡΡΠΈΠΉ ΠΊΠΎΠ΄ Π²Π½ΡΡΡΡ ShoppingCart :
ΠΠΎΠ±Π°Π²ΠΈΠ² ΡΡΠΎΡ ΠΊΠΎΠ΄, Π²Ρ:
ΠΠ°Π»Π΅Π΅ Π²Ρ ΡΠ·Π½Π°Π΅ΡΠ΅, ΠΊΠ°ΠΊ ΠΏΠΎΠ»ΡΡΠΈΡΡ Π΄ΠΎΡΡΡΠΏ ΠΊ ΠΏΡΠ±Π»ΠΈΡΠ½ΠΎΠΌΡ ΠΈΠ½ΡΠ΅ΡΡΠ΅ΠΉΡΡ ΡΠΎΠ»ΡΠΊΠΎ ΡΡΠΎ ΠΎΠΏΡΠ΅Π΄Π΅Π»Π΅Π½Π½ΠΎΠ³ΠΎ ΡΠΈΠ½Π³Π»ΡΠΎΠ½Π°.
ΠΠΎΠ»ΡΡΠ΅Π½ΠΈΠ΅ ΠΏΡΠ±Π»ΠΈΡΠ½ΠΎΠ³ΠΎ ΠΈΠ½ΡΠ΅ΡΡΠ΅ΠΉΡΠ° ΡΠΈΠ½Π³Π»ΡΠΎΠ½Π°
Π’Π΅ΠΏΠ΅ΡΡ Π΄ΠΎΠ±Π°Π²ΡΡΠ΅ Π½Π΅ΠΊΠΎΡΠΎΡΡΡ Π»ΠΎΠ³ΠΈΠΊΡ Π΄Π»Ρ ΠΏΠΎΠ»ΡΡΠ΅Π½ΠΈΡ ΠΎΠ΄ΠΈΠ½ΠΎΡΠΊΠΈ. ΠΠ»Ρ ΡΡΠΎΠ³ΠΎ:
ΠΠ»Ρ Π²ΠΈΠ·ΡΠ°Π»ΠΈΠ·Π°ΡΠΈΠΈ ΠΎΠ±ΡΠ°ΡΠ½ΠΎΠΉ ΡΠ²ΡΠ·ΠΈ, ΠΏΠΎΠ·Π²ΠΎΠ»ΡΡΡΠ΅ΠΉ ΡΠ±Π΅Π΄ΠΈΡΡΡΡ, ΡΡΠΎ Π²Ρ ΡΡΠΏΠ΅ΡΠ½ΠΎ Π΄ΠΎΠ±Π°Π²ΠΈΠ»ΠΈ ΠΏΡΠΎΠ΄ΡΠΊΡ, Π²Ρ ΡΠ°ΠΊΠΆΠ΅ ΠΏΠΎΠΊΠ°Π·ΡΠ²Π°Π΅ΡΠ΅ Toast.
Π’Π΅ΠΏΠ΅ΡΡ ΡΠΎΠ±Π΅ΡΠΈΡΠ΅ ΠΈ Π·Π°ΠΏΡΡΡΠΈΡΠ΅. ΠΠ°ΠΆΠΌΠΈΡΠ΅ Π½Π° ΠΏΡΠΎΠ΄ΡΠΊΡ, ΠΈ Π²Ρ ΡΠ²ΠΈΠ΄ΠΈΡΠ΅ Toast, ΠΏΠΎΠ΄ΡΠ²Π΅ΡΠΆΠ΄Π°ΡΡΠΈΠΉ, ΡΡΠΎ Π²Ρ Π΄ΠΎΠ±Π°Π²ΠΈΠ»ΠΈ Π΅Π³ΠΎ Π² ΠΊΠΎΡΠ·ΠΈΠ½Ρ:
Π Π°Π±ΠΎΡΠ° Ρ ΡΠΎΠΏΡΡΡΡΠ²ΡΡΡΠΈΠΌΠΈ ΠΎΠ±ΡΠ΅ΠΊΡΠ°ΠΌΠΈ
ΠΡΠΎ Π±ΡΠ΄Π΅Ρ Π²Π°ΠΆΠ½ΠΎ, ΠΊΠΎΠ³Π΄Π° Π²Ρ ΡΠ·Π½Π°Π΅ΡΠ΅, ΠΊΠ°ΠΊ ΠΏΠΎΠ»ΡΡΠΈΡΡ Π΄ΠΎΡΡΡΠΏ ΠΊ ΡΠΎΠΏΡΡΡΡΠ²ΡΡΡΠΈΠΌ ΠΎΠ±ΡΠ΅ΠΊΡΠ°ΠΌ Π² ΡΠ»Π΅Π΄ΡΡΡΠ΅ΠΌ ΡΠ°Π·Π΄Π΅Π»Π΅. Π ΠΏΠΎΠΊΠ° ΡΠΎΡΡΠ΅Π΄ΠΎΡΠΎΡΠΈΡΠ΅ΡΡ Π½Π° ΠΎΠΏΡΠ΅Π΄Π΅Π»Π΅Π½ΠΈΠΈ ΡΠΎΠΏΡΡΡΡΠ²ΡΡΡΠ΅Π³ΠΎ ΠΎΠ±ΡΠ΅ΠΊΡΠ°.
ΠΠΏΡΠ΅Π΄Π΅Π»Π΅Π½ΠΈΠ΅ ΡΠΎΠΏΡΡΡΡΠ²ΡΡΡΠ΅Π³ΠΎ ΠΎΠ±ΡΠ΅ΠΊΡΠ°
ΠΠ»Ρ ΠΎΠΏΡΠ΅Π΄Π΅Π»Π΅Π½ΠΈΡ ΡΠΎΠΏΡΡΡΡΠ²ΡΡΡΠ΅Π³ΠΎ ΠΎΠ±ΡΠ΅ΠΊΡΠ° ΠΎΡΠΊΡΠΎΠΉΡΠ΅ ShoppingCartActivity ΠΈ Π½Π°ΠΉΠ΄ΠΈΡΠ΅ // TOD O ΠΏΠ΅ΡΠ΅Π΄ ΠΏΠΎΡΠ»Π΅Π΄Π½Π΅ΠΉ Π·Π°ΠΊΡΡΠ²Π°ΡΡΠ΅ΠΉ ΡΠΊΠΎΠ±ΠΊΠΎΠΉ. ΠΠ°ΠΌΠ΅Π½ΠΈΡΠ΅ Π½Π° ΡΠ»Π΅Π΄ΡΡΡΠ΅Π΅:
ΠΡΠ»ΠΈ Android Studio ΠΏΠΎΠ±ΡΠΆΠ΄Π°Π΅Ρ ΡΠ°ΠΊ ΡΠ΄Π΅Π»Π°ΡΡ, ΠΈΠΌΠΏΠΎΡΡΠΈΡΡΠΉΡΠ΅ android.content.Context ΠΈ android.content.Intent Π΄Π»Ρ Context ΠΈ Intent ΡΠΎΠΎΡΠ²Π΅ΡΡΡΠ²Π΅Π½Π½ΠΎ.
ΠΠΎΠ·Π΄ΡΠ°Π²Π»ΡΡ, Π²Ρ ΠΎΠΏΡΠ΅Π΄Π΅Π»ΠΈΠ»ΠΈ ΡΠΎΠΏΡΡΡΡΠ²ΡΡΡΠΈΠΉ ΠΎΠ±ΡΠ΅ΠΊΡ!
ΠΠ°ΠΌΠ΅ΡΠΊΠ°
ΠΡΠ½ΠΎΠ²Π½ΠΎΠ΅ ΡΠ°Π·Π»ΠΈΡΠΈΠ΅ ΠΌΠ΅ΠΆΠ΄Ρ ΠΎΠ±ΡΡΠ²Π»Π΅Π½ΠΈΡΠΌΠΈ ΠΎΠ±ΡΠ΅ΠΊΡΠΎΠ² ΠΈ ΡΠΎΠΏΡΡΡΡΠ²ΡΡΡΠΈΠΌΠΈ ΠΎΠ±ΡΠ΅ΠΊΡΠ°ΠΌΠΈ Π·Π°ΠΊΠ»ΡΡΠ°Π΅ΡΡΡ Π² ΡΠΎΠΌ, ΠΊΠ°ΠΊ ΠΎΠ½ΠΈ ΠΈΠ½ΠΈΡΠΈΠ°Π»ΠΈΠ·ΠΈΡΡΡΡΡΡ. ΠΠ±ΡΡΠ²Π»Π΅Π½ΠΈΡ ΠΎΠ±ΡΠ΅ΠΊΡΠΎΠ² ΠΈΠ½ΠΈΡΠΈΠ°Π»ΠΈΠ·ΠΈΡΡΡΡΡΡ ΠΏΡΠΈ ΠΏΠ΅ΡΠ²ΠΎΠΌ ΠΈΡΠΏΠΎΠ»ΡΠ·ΠΎΠ²Π°Π½ΠΈΠΈ. Π‘ΠΎΠΏΡΡΡΡΠ²ΡΡΡΠΈΠ΅ ΠΎΠ±ΡΠ΅ΠΊΡΡ ΠΈΠ½ΠΈΡΠΈΠ°Π»ΠΈΠ·ΠΈΡΡΡΡΡΡ ΠΏΡΠΈ Π·Π°Π³ΡΡΠ·ΠΊΠ΅ ΡΠΎΠ΄Π΅ΡΠΆΠ°ΡΠ΅Π³ΠΎ ΠΈΡ ΠΊΠ»Π°ΡΡΠ°, ΡΡΠΎ ΡΠΎΠΎΡΠ²Π΅ΡΡΡΠ²ΡΠ΅Ρ ΠΏΠΎΠ²Π΅Π΄Π΅Π½ΠΈΡ ΡΡΠ°ΡΠΈΡΠ΅ΡΠΊΠΈΡ ΠΈΠ½ΠΈΡΠΈΠ°Π»ΠΈΠ·Π°ΡΠΎΡΠΎΠ² Java.
ΠΠΎΠ»ΡΡΠ΅Π½ΠΈΠ΅ ΡΠΎΠΏΡΡΡΡΠ²ΡΡΡΠ΅Π³ΠΎ ΠΎΠ±ΡΠ΅ΠΊΡΠ° Π΄Π»Ρ ΡΡΠ°ΡΡΠ° Π·Π°Π΄Π°ΡΠΈ
Π’Π΅ΠΏΠ΅ΡΡ ΡΠΎΠ±Π΅ΡΠΈΡΠ΅ ΠΏΡΠΎΠ΅ΠΊΡ ΠΈ Π·Π°ΠΏΡΡΡΠΈΡΠ΅ Π΅Π³ΠΎ. ΠΠ°ΠΆΠΌΠΈΡΠ΅ Π½Π° Go to Cart ΠΈ Π²Ρ ΡΠ²ΠΈΠ΄ΠΈΡΠ΅, ΡΡΠΎ ΠΏΡΠΈΠ»ΠΎΠΆΠ΅Π½ΠΈΠ΅ ΡΠ΅ΠΏΠ΅ΡΡ ΠΏΠΎΠΊΠ°Π·ΡΠ²Π°Π΅Ρ Π½ΠΎΠ²ΡΠΉ ΠΏΡΡΡΠΎΠΉ ΡΠΊΡΠ°Π½:
ΠΠΎ ΠΊΡΠ΄Π° ΠΆΠ΅ ΠΏΠΎΠ΄Π΅Π²Π°Π»ΠΈΡΡ Π²ΡΠ΅ ΡΠΎΠ²Π°ΡΡ ΠΈΠ· Π²Π°ΡΠ΅ΠΉ ΠΊΠΎΡΠ·ΠΈΠ½Ρ? ΠΠ΅ Π²ΠΎΠ»Π½ΡΠΉΡΠ΅ΡΡ, Π²Ρ Π·Π°ΠΉΠΌΠ΅ΡΠ΅ΡΡ ΡΡΠΈΠΌ Π² ΡΠ»Π΅Π΄ΡΡΡΠ΅ΠΌ ΡΠ°Π·Π΄Π΅Π»Π΅.
ΠΡΠΎΠ±ΡΠ°ΠΆΠ΅Π½ΠΈΠ΅ ΡΠΎΠ²Π°ΡΠΎΠ² ΠΈΠ· ΠΊΠΎΡΠ·ΠΈΠ½Ρ
Π’Π΅ΠΏΠ΅ΡΡ Π²Ρ ΡΠΎΠ·Π΄Π°Π΄ΠΈΡΠ΅ ΡΠΊΡΠ°Π½ ΠΊΠΎΡΠ·ΠΈΠ½Ρ Π΄Π»Ρ ΠΏΠΎΠΊΡΠΏΠΎΠΊ, ΠΈΡΠΏΠΎΠ»ΡΠ·ΡΡ:
ΠΠ»Ρ Π½Π°ΡΠ°Π»Π° Π²Ρ ΠΏΡΠΈΠΌΠ΅Π½ΠΈΡΠ΅ Java ΠΊΠ»Π°ΡΡ Π΄Π»Ρ ΠΏΠΎΠ΄ΡΡΠ΅ΡΠ° ΠΈΡΠΎΠ³ΠΎΠ²ΠΎΠΉ ΡΠ΅Π½Ρ ΠΊΠΎΡΠ·ΠΈΠ½Ρ. Π ΠΏΡΠΎΡΠ΅ΡΡΠ΅ Π²Ρ ΠΈΠ·ΡΡΠΈΡΠ΅, ΠΊΠ°ΠΊ ΡΠΎΠ²ΠΌΠ΅ΡΡΠΈΠΌΠΎΡΡΡ ΠΌΠ΅ΠΆΠ΄Ρ Kotlin ΠΈ Java ΠΎΠ΄ΠΈΠ½ΠΎΡΠΊΠ°ΠΌΠΈ ΡΡΡΡΠΎΠ΅Π½Π°.
ΠΠΎΠ»ΡΡΠ΅Π½ΠΈΠ΅ Kotlin ΠΎΠ΄ΠΈΠ½ΠΎΡΠΊΠΈ ΠΈΠ· Java Π΄Π»Ρ ΠΏΠΎΠ΄ΡΡΠ΅ΡΠ° ΡΠ΅Π½Ρ
ΠΠ°ΡΠ½ΠΈΡΠ΅ Ρ ΡΠΎΠ·Π΄Π°Π½ΠΈΡ Π½ΠΎΠ²ΠΎΠ³ΠΎ Java ΠΊΠ»Π°ΡΡΠ° Π΄Π»Ρ Π²ΡΠΏΠΎΠ»Π½Π΅Π½ΠΈΡ ΡΡΠΈΡ Π²ΡΡΠΈΡΠ»Π΅Π½ΠΈΠΉ, ΠΈΡΠΏΠΎΠ»ΡΠ·ΡΡ ΡΠ»Π΅Π΄ΡΡΡΠΈΠ΅ ΡΠ°Π³ΠΈ:
ΠΠΎΠΊΠ° ΡΡΠΎΡ ΠΌΠ΅ΡΠΎΠ΄ ΠΎΡΡΠ°Π±Π°ΡΡΠ²Π°Π΅Ρ, Π²Ρ ΠΌΠΎΠΆΠ΅ΡΠ΅ Π΅Π³ΠΎ Π½Π΅ΠΌΠ½ΠΎΠ³ΠΎ ΠΏΠΎΠ΄ΡΠΈΡΡΠΈΡΡ, ΠΈΡΠΏΠΎΠ»ΡΠ·ΡΡ @JvmStatic :
ΠΠΎΠ±Π°Π²ΠΈΠ² Π°Π½Π½ΠΎΡΠ°ΡΠΈΡ, ΠΎΠ±ΡΡΠ²Π»Π΅Π½ΠΈΠ΅ products Π΄ΠΎΠ»ΠΆΠ½ΠΎ Π²ΡΠ³Π»ΡΠ΄Π΅ΡΡ ΡΠ°ΠΊ:
ΠΡΠΎΠ±ΡΠ°ΠΆΠ΅Π½ΠΈΠ΅ ΡΠΎΠ²Π°ΡΠΎΠ² Π² ΠΊΠΎΡΠ·ΠΈΠ½Π΅
ΠΠ°ΠΌ Π½ΡΠΆΠ½ΠΎ Π±ΡΠ΄Π΅Ρ ΠΏΠΎΠ΄ΠΊΠ»ΡΡΠΈΡΡ Π²ΡΠ΅, ΡΡΠΎΠ±Ρ ΠΎΡΠΎΠ±ΡΠ°ΠΆΠ°Π»ΠΈΡΡ ΡΠΎΠ²Π°ΡΡ ΠΈ ΠΎΠ±ΡΠ°Ρ ΡΠ΅Π½Π° Π² ΠΊΠΎΡΠ·ΠΈΠ½Π΅. ΠΠ»Ρ ΡΡΠΎΠ³ΠΎ:
ΠΠΎΡ ΡΡΠΎ Π΄Π΅Π»Π°Π΅Ρ ΠΏΡΠΈΠ²Π΅Π΄Π΅Π½Π½ΡΠΉ Π²ΡΡΠ΅ ΠΊΠΎΠ΄:
Π’Π΅ΠΏΠ΅ΡΡ ΡΠΎΠ±Π΅ΡΠΈΡΠ΅ ΠΈ Π·Π°ΠΏΡΡΡΠΈΡΠ΅ ΠΏΡΠΎΠ΅ΠΊΡ. Π£Π±Π΅Π΄ΠΈΡΠ΅ΡΡ, ΡΡΠΎ ΠΎΠ½ ΡΠ°Π±ΠΎΡΠ°Π΅Ρ, Π΄ΠΎΠ±Π°Π²ΠΈΠ² Π½Π΅ΡΠΊΠΎΠ»ΡΠΊΠΎ ΠΏΡΠΎΠ΄ΡΠΊΡΠΎΠ² Π² ΠΊΠΎΡΠ·ΠΈΠ½Ρ ΠΈ Π½Π°ΠΆΠ°Π² Go to Cart. ΠΡ ΡΠ²ΠΈΠ΄ΠΈΡΠ΅ ΡΠΊΡΠ°Π½, Π½Π° ΠΊΠΎΡΠΎΡΠΎΠΌ ΠΎΡΠΎΠ±ΡΠ°ΠΆΠ°Π΅ΡΡΡ ΠΊΠΎΡΠ·ΠΈΠ½Π° Ρ ΡΠΎΠ²Π°ΡΠ°ΠΌΠΈ ΠΏΠ»ΡΡ ΠΎΠ±ΡΠ°Ρ ΡΠ΅Π½Π°:
ΠΡ ΡΠΎΠ»ΡΠΊΠΎ ΡΡΠΎ ΡΠ·Π½Π°Π»ΠΈ, ΠΊΠ°ΠΊ Π·Π°ΡΡΠ°Π²ΠΈΡΡ Java ΠΏΠΎΠ»ΡΡΠΈΡΡ Π΄ΠΎΡΡΡΠΏ ΠΊ Π΄Π°Π½Π½ΡΠΌ ΠΈΠ· ΡΠΈΠ½Π³Π»ΡΠΎΠ½Π° Kotlin. ΠΠ°Π»Π΅Π΅ Π²Ρ ΡΠ·Π½Π°Π΅ΡΠ΅, ΠΊΠ°ΠΊ ΡΠ΄Π°Π»ΠΈΡΡ ΡΠΎΠ²Π°ΡΡ ΠΈΠ· ΠΊΠΎΡΠ·ΠΈΠ½Ρ Ρ ΠΏΠΎΠΌΠΎΡΡΡ ΠΊΠ½ΠΎΠΏΠΊΠΈ Clear Cart.
ΠΠΏΡΠ΅Π΄Π΅Π»Π΅Π½ΠΈΠ΅ ΡΠ»ΡΡΠ°ΡΠ΅Π»Π΅ΠΉ ΠΎΠ±ΡΠ΅ΠΊΡΠΎΠ²
ΠΠΎΠ³Π΄Π° ΠΏΠΎΠ»ΡΠ·ΠΎΠ²Π°ΡΠ΅Π»Ρ ΠΎΡΠΈΡΠ°Π΅Ρ ΠΊΠΎΡΠ·ΠΈΠ½Ρ ΠΏΠΎΠΊΡΠΏΠΎΠΊ, ShoppingCartActivity Π΄ΠΎΠ»ΠΆΠ΅Π½ ΠΎΠ±Π½ΠΎΠ²ΠΈΡΡΡΡ, ΡΡΠΎΠ±Ρ ΠΎΡΠΎΠ±ΡΠ°Π·ΠΈΡΡ ΠΏΡΡΡΡΡ ΠΊΠΎΡΠ·ΠΈΠ½Ρ Π²ΠΌΠ΅ΡΡΠΎ ΠΊΠΎΡΠ·ΠΈΠ½Ρ Ρ ΠΏΡΠΎΠ΄ΡΠΊΡΠ°ΠΌΠΈ. ΠΠΎ ΡΠΈΠ½Π³Π»ΡΠΎΠ½Ρ Π½Π΅ ΡΠ²Π΅Π΄ΠΎΠΌΠ»ΡΡΡ ΡΠ²ΠΎΠΈΡ ΡΠ»ΡΡΠ°ΡΠ΅Π»Π΅ΠΉ ΠΎΠ± ΠΈΠ·ΠΌΠ΅Π½Π΅Π½ΠΈΡΡ Π°Π²ΡΠΎΠΌΠ°ΡΠΈΡΠ΅ΡΠΊΠΈ, ΠΏΠΎΡΡΠΎΠΌΡ Π²Π°ΠΌ Π½Π΅ΠΎΠ±Ρ ΠΎΠ΄ΠΈΠΌΠΎ ΡΠ΅Π°Π»ΠΈΠ·ΠΎΠ²Π°ΡΡ ΡΡΠΎ ΠΏΠΎΠ²Π΅Π΄Π΅Π½ΠΈΠ΅, ΡΡΠΎΠ±Ρ ΠΏΠΎΠ»ΡΠ·ΠΎΠ²Π°ΡΠ΅Π»Ρ ΠΌΠΎΠ³ ΠΎΡΠΈΡΡΠΈΡΡ ΡΠ²ΠΎΡ ΠΊΠΎΡΠ·ΠΈΠ½Ρ.
Π£Π²Π΅Π΄ΠΎΠΌΠ»Π΅Π½ΠΈΠ΅ ΡΠ»ΡΡΠ°ΡΠ΅Π»Π΅ΠΉ ΠΎΠ± ΠΈΠ·ΠΌΠ΅Π½Π΅Π½ΠΈΡΡ ΠΊΠΎΡΠ·ΠΈΠ½Ρ
Π§ΡΠΎΠ±Ρ ΡΠ²Π΅Π΄ΠΎΠΌΠΈΡΡ ΡΠ»ΡΡΠ°ΡΠ΅Π»Π΅ΠΉ ΠΎΠ± ΠΈΠ·ΠΌΠ΅Π½Π΅Π½ΠΈΡΡ ΠΊΠΎΡΠ·ΠΈΠ½Ρ, ΠΎΡΠΊΡΠΎΠΉΡΠ΅ ShoppingCart ΠΈ Π΄ΠΎΠ±Π°Π²ΡΡΠ΅ ΡΠ»Π΅Π΄ΡΡΡΠΈΠΉ ΠΊΠΎΠ΄ ΠΏΠ΅ΡΠ΅Π΄ ΠΏΠΎΡΠ»Π΅Π΄Π½Π΅ΠΉ Π·Π°ΠΊΡΡΠ²Π°ΡΡΠ΅ΠΉ ΡΠΊΠΎΠ±ΠΊΠΎΠΉ:
ΠΠ΄Π΅ΡΡ Π²Ρ ΠΎΠΏΡΠ΅Π΄Π΅Π»ΡΠ΅ΡΠ΅ ΠΈΠ½ΡΠ΅ΡΡΠ΅ΠΉΡ, ΠΊΠΎΡΠΎΡΡΠΉ ShoppingCart Π±ΡΠ΄Π΅Ρ ΠΈΡΠΏΠΎΠ»ΡΠ·ΠΎΠ²Π°ΡΡ Π΄Π»Ρ ΡΠ²Π΅Π΄ΠΎΠΌΠ»Π΅Π½ΠΈΡ ΡΠ»ΡΡΠ°ΡΠ΅Π»Π΅ΠΉ ΠΎΠ± ΠΈΠ·ΠΌΠ΅Π½Π΅Π½ΠΈΠΈ ΡΠ²ΠΎΠΈΡ Π΄Π°Π½Π½ΡΡ .
ΠΠ°ΡΠ΅ΠΌ Π΄ΠΎΠ±Π°Π²ΡΡΠ΅ ΡΠ»Π΅Π΄ΡΡΡΠΈΠΉ ΠΊΠΎΠ΄ ΠΌΠ΅ΠΆΠ΄Ρ var products ΠΈ addProduct() Π² ShoppingCart :
Π ΠΏΡΠΈΠ²Π΅Π΄Π΅Π½Π½ΠΎΠΌ ΠΊΠΎΠ΄Π΅ Π²Ρ ΠΎΠΏΡΠ΅Π΄Π΅Π»ΠΈΠ»ΠΈ ΡΠ»Π°Π±ΡΡ ΡΡΡΠ»ΠΊΡ Π½Π° ΡΠ»ΡΡΠ°ΡΠ΅Π»Ρ. ΠΡΠΎ Π·Π°ΡΡΠ°Π²Π»ΡΠ΅Ρ ShoppingCart ΡΠ²Π΅Π΄ΠΎΠΌΠ»ΡΡΡ ΡΡΠΎΠ³ΠΎ ΡΠ»ΡΡΠ°ΡΠ΅Π»Ρ Π²ΡΡΠΊΠΈΠΉ ΡΠ°Π·, ΠΊΠΎΠ³Π΄Π° Π΄Π°Π½Π½ΡΠ΅ ΠΌΠ΅Π½ΡΡΡΡΡ.
Π‘Π»Π°Π±Π°Ρ ΡΡΡΠ»ΠΊΠ° Π½Π΅ Π΄Π°Π΅Ρ ΠΎΠ΄ΠΈΠ½ΠΎΡΠΊΠ΅ ΡΠΈΠ»ΡΠ½ΠΎ ΡΠ΄Π΅ΡΠΆΠΈΠ²Π°ΡΡΡΡ Π·Π° Π΄Π΅ΠΉΡΡΠ²ΠΈΠ΅, ΡΡΠΎ ΠΌΠΎΠΆΠ΅Ρ Π²ΡΠ·Π²Π°ΡΡ ΡΡΠ΅ΡΠΊΡ ΠΏΠ°ΠΌΡΡΠΈ. ΠΠΎΠ΄ΡΠΎΠ±Π½Π΅Π΅ ΠΎΠ± ΡΡΠΎΠΌ ΠΏΠΎΠ·ΠΆΠ΅!
Π’Π΅ΠΏΠ΅ΡΡ, ΠΊΠΎΠ³Π΄Π° Ρ Π²Π°Ρ Π΅ΡΡΡ ΡΠ»ΡΡΠ°ΡΠ΅Π»Ρ, Π²Ρ Π΄ΠΎΠ»ΠΆΠ½Ρ Π΅Π³ΠΎ ΡΠ²Π΅Π΄ΠΎΠΌΠΈΡΡ! ΠΡΠ΅ Π² ShoppingCart Π΄ΠΎΠ±Π°Π²ΡΡΠ΅ ΡΠ»Π΅Π΄ΡΡΡΡΡ ΡΡΠ½ΠΊΡΠΈΡ:
ΠΡΠΎ Π΄ΠΎΠ±Π°Π²Π»ΡΠ΅Ρ ΡΠ°ΡΡΠ½ΡΠΉ ΠΌΠ΅ΡΠΎΠ΄ ΠΊ ΠΎΠ΄ΠΈΠ½ΠΎΡΠΊΠ΅. ΠΠ½ ΡΠ²Π΅Π΄ΠΎΠΌΠ»ΡΠ΅Ρ Π²Π°ΡΠ΅Π³ΠΎ ΡΠ»ΡΡΠ°ΡΠ΅Π»Ρ ΠΎΠ± ΠΈΠ·ΠΌΠ΅Π½Π΅Π½ΠΈΠΈ ΡΠΏΠΈΡΠΊΠ° ΠΏΡΠΎΠ΄ΡΠΊΡΠΎΠ². ΠΠΎΡΠΊΠΎΠ»ΡΠΊΡ ΡΠΎΠ»ΡΠΊΠΎ ΡΠΈΠ½Π³Π»ΡΠΎΠ½ ΠΌΠΎΠΆΠ΅Ρ ΠΎΠ±Π½ΠΎΠ²Π»ΡΡΡ ΡΠΏΠΈΡΠΎΠΊ, ΠΈΠΌΠ΅Π½Π½ΠΎ ΠΎΠ½ Π΄ΠΎΠ»ΠΆΠ΅Π½ ΠΈΠΌΠ΅ΡΡ Π²ΠΎΠ·ΠΌΠΎΠΆΠ½ΠΎΡΡΡ Π·Π°ΠΏΡΡΠΊΠ°ΡΡ ΡΡΠΎ ΡΠ²Π΅Π΄ΠΎΠΌΠ»Π΅Π½ΠΈΠ΅. ΠΠΎΠ΄ΠΎΠ±Π½ΡΠ΅ ΡΠ°ΡΡΠ½ΡΠ΅ ΠΌΠ΅ΡΠΎΠ΄Ρ Π½Π΅ Π±ΡΠ΄ΡΡ Π²ΠΈΠ΄Π½Ρ ΠΈΠ·Π²Π½Π΅ ΠΎΠ΄ΠΈΠ½ΠΎΡΠΊΠΈ, ΠΏΠΎΡΡΠΎΠΌΡ ΠΎΠ½ΠΈ ΠΈΠ΄Π΅Π°Π»ΡΠ½ΠΎ ΠΏΠΎΠ΄Ρ ΠΎΠ΄ΡΡ Π΄Π»Ρ Π²Π½ΡΡΡΠ΅Π½Π½Π΅ΠΉ Π»ΠΎΠ³ΠΈΠΊΠΈ.
Π’Π΅ΠΏΠ΅ΡΡ, ΠΊΠΎΠ³Π΄Π° Π±Ρ ΠΏΠΎΠ»ΡΠ·ΠΎΠ²Π°ΡΠ΅Π»Ρ Π½Π΅ Π΄ΠΎΠ±Π°Π²ΠΈΠ» ΡΠΎΠ²Π°Ρ Π² ΠΊΠΎΡΠ·ΠΈΠ½Ρ, ShoppingCart ΡΠ²Π΅Π΄ΠΎΠΌΠΈΡ Π΅Π³ΠΎ ΡΠ»ΡΡΠ°ΡΠ΅Π»Π΅ΠΉ.
ΠΡΠΎΡΠ»ΡΡΠΈΠ²Π°Π½ΠΈΠ΅ ΠΈΠ·ΠΌΠ΅Π½Π΅Π½ΠΈΠΉ ΠΊΠΎΡΠ·ΠΈΠ½Ρ: Π°Π½ΠΎΠ½ΠΈΠΌΠ½ΡΠ΅ ΠΎΠ±ΡΠ΅ΠΊΡΡ
ΠΠ»Ρ ΡΡΠΎΠ³ΠΎ Π²Π΅ΡΠ½ΠΈΡΠ΅ΡΡ Π² ShoppingCartActivity ΠΈ Π΄ΠΎΠ±Π°Π²ΡΡΠ΅ ΡΠ»Π΅Π΄ΡΡΡΠ΅Π΅ ΡΠ²ΠΎΠΉΡΡΠ²ΠΎ ΠΌΠ΅ΠΆΠ΄Ρ var products ΠΈ onCreate() :
ΠΡ ΠΎΠΏΡΠ΅Π΄Π΅Π»ΠΈΠ»ΠΈ ΡΡΠΎΡ Π°Π½ΠΎΠ½ΠΈΠΌΠ½ΡΠΉ ΠΎΠ±ΡΠ΅ΠΊΡ ΠΊΠ°ΠΊ ΡΠ²ΠΎΠΉΡΡΠ²ΠΎ ΡΠ²ΠΎΠ΅Π³ΠΎ ShoppingCartActivity. ΠΡΠΎ ΠΎΠ·Π½Π°ΡΠ°Π΅Ρ, ΡΡΠΎ ΠΏΠ΅ΡΠ΅ΠΎΠΏΡΠ΅Π΄Π΅Π»Π΅Π½Π½ΡΠΉ onCartChanged() ΠΌΠΎΠΆΠ΅Ρ ΠΏΠΎΠ»ΡΡΠΈΡΡ Π΄ΠΎΡΡΡΠΏ ΠΊ Π»ΡΠ±ΡΠΌ ΡΡΠ½ΠΊΡΠΈΡΠΌ ΠΈ ΡΠ²ΠΎΠΉΡΡΠ²Π°ΠΌ Π² Π΄Π΅ΠΉΡΡΠ²ΠΈΠΈ.
Π’Π΅ΠΏΠ΅ΡΡ Π²Π°ΠΌ Π½ΡΠΆΠ½ΠΎ ΡΠΊΠ°Π·Π°ΡΡ ΠΎΠ΄ΠΈΠ½ΠΎΡΠΊΠ΅ ΠΈΡΠΏΠΎΠ»ΡΠ·ΠΎΠ²Π°ΡΡ ΡΠΎΠ»ΡΠΊΠΎ ΡΡΠΎ ΡΠΎΠ·Π΄Π°Π½Π½ΠΎΠ΅ ΡΠ²ΠΎΠΉΡΡΠ²ΠΎ Π² ΠΊΠ°ΡΠ΅ΡΡΠ²Π΅ Π΅Π³ΠΎ ΡΠ»ΡΡΠ°ΡΠ΅Π»Ρ. ΠΠ°ΠΉΠ΄ΠΈΡΠ΅ // Your code Π²Π½ΡΡΡΠΈ onCreate() ΠΈ Π·Π°ΠΌΠ΅Π½ΠΈΡΠ΅ Π΅Π³ΠΎ Π½Π°:
ΠΠ°Π»Π΅Π΅ Π½Π°ΠΉΠ΄ΠΈΡΠ΅ setupClearCartButton() ΠΈ Π·Π°ΠΌΠ΅Π½ΠΈΡΠ΅ // TODO Π½Π°:
ΠΡΠΎΡ ΠΊΠΎΠ΄ Π²ΡΠ·ΡΠ²Π°Π΅Ρ clear() Π² ΡΠΈΠ½Π³Π»ΡΠΎΠ½, ΠΊΠΎΠ³Π΄Π° ΠΏΠΎΠ»ΡΠ·ΠΎΠ²Π°ΡΠ΅Π»Ρ Π½Π°ΠΆΠΈΠΌΠ°Π΅Ρ ΠΊΠ½ΠΎΠΏΠΊΡ Clear Cart.
ΠΠΎΠ³Π΄Π° ΠΏΠΎΠ»ΡΠ·ΠΎΠ²Π°ΡΠ΅Π»Ρ ΠΎΡΠΈΡΠ°Π΅Ρ ΠΊΠΎΡΠ·ΠΈΠ½Ρ Π΄Π»Ρ ΠΏΠΎΠΊΡΠΏΠΎΠΊ, ΠΎΠ΄ΠΈΠ½ΠΎΡΠΊΠ° ΡΠ²Π΅Π΄ΠΎΠΌΠ»ΡΠ΅Ρ ΡΠ²ΠΎΠ΅Π³ΠΎ ΡΠ»ΡΡΠ°ΡΠ΅Π»Ρ. ΠΠΎΡΠΊΠΎΠ»ΡΠΊΡ ΡΠ»ΡΡΠ°ΡΠ΅Π»Ρ Π±ΡΠ» Π½Π°ΡΡΡΠΎΠ΅Π½ Π½Π° Π°Π½ΠΎΠ½ΠΈΠΌΠ½ΡΠΉ ΠΎΠ±ΡΠ΅ΠΊΡ Π² ShoppingCartActivity, ΠΈΠΌΠ΅Π½Π½ΠΎ ΠΎΠ± ΡΡΠΎΠΌ ΠΈ ΠΎΡΠΏΡΠ°Π²Π»ΡΠ΅ΡΡΡ ΡΠ²Π΅Π΄ΠΎΠΌΠ»Π΅Π½ΠΈΠ΅.
Π’Π΅ΠΏΠ΅ΡΡ ΡΠΎΠ±Π΅ΡΠΈΡΠ΅ ΠΈ Π·Π°ΠΏΡΡΡΠΈΡΠ΅ ΠΏΡΠΈΠ»ΠΎΠΆΠ΅Π½ΠΈΠ΅. ΠΠΎΠ±Π°Π²ΡΡΠ΅ ΡΠΎΠ²Π°ΡΡ Π² ΠΊΠΎΡΠ·ΠΈΠ½Ρ, Π½Π°ΠΆΠΌΠΈΡΠ΅ Go to Cart ΠΈ Clear Cart. ΠΡΠΎ ΠΎΡΠΈΡΡΠΈΡ ΠΊΠΎΡΠ·ΠΈΠ½Ρ ΠΈ ΠΎΠ±Π½ΠΎΠ²ΠΈΡ view:
Π Π²ΠΎΡ: ΡΠΈΠ½Π°Π»ΡΠ½ΡΠΉ Π²ΠΈΠ΄ Π²Π°ΡΠ΅ΠΉ ΠΊΠΎΡΠ·ΠΈΠ½Ρ ΠΏΠΎΠΊΡΠΏΠΎΠΊ!
ΠΠ°Π»Π΅Π΅ Π²Ρ ΠΈΠ·ΡΡΠΈΡΠ΅ Π½Π΅ΠΊΠΎΡΠΎΡΡΠ΅ Π»ΡΡΡΠΈΠ΅ ΠΏΡΠΈΠ΅ΠΌΡ ΠΏΠΎ ΡΠ°Π±ΠΎΡΠ΅ Ρ Kotlin ΠΎΠ±ΡΠ΅ΠΊΡΠ°ΠΌΠΈ.
ΠΡΡΡΠΈΠ΅ ΠΏΡΠΈΠ΅ΠΌΡ Π΄Π»Ρ ΡΠΈΠ½Π³Π»ΡΠΎΠ½ΠΎΠ² ΠΈ ΡΠΎΠΏΡΡΡΡΠ²ΡΡΡΠΈΡ ΠΎΠ±ΡΠ΅ΠΊΡΠΎΠ²
ΠΡΠ΅ΠΆΠ΄Π΅ ΡΠ΅ΠΌ Π·Π°ΠΊΠΎΠ½ΡΠΈΡΡ ΡΡΠ°ΡΡΡ, ΡΠ΄Π΅Π»ΠΈΡΠ΅ Π½Π΅ΠΌΠ½ΠΎΠ³ΠΎ Π²ΡΠ΅ΠΌΠ΅Π½ΠΈ ΡΠ°ΡΡΠΌΠΎΡΡΠ΅Π½ΠΈΡ Π½Π΅ΠΊΠΎΡΠΎΡΡΡ ΠΏΠ΅ΡΠ΅Π΄ΠΎΠ²ΡΡ ΠΌΠΎΠΌΠ΅Π½ΡΠΎΠ².
Kotlin, ΠΊΠΎΠΌΠΏΠΈΠ»ΡΡΠΈΡ Π² Π±Π°ΠΉΡΠΊΠΎΠ΄ ΠΈ ΠΏΡΠΎΠΈΠ·Π²ΠΎΠ΄ΠΈΡΠ΅Π»ΡΠ½ΠΎΡΡΡ (ΡΠ°ΡΡΡ 2)
ΠΡΠΎ ΠΏΡΠΎΠ΄ΠΎΠ»ΠΆΠ΅Π½ΠΈΠ΅ ΠΏΡΠ±Π»ΠΈΠΊΠ°ΡΠΈΠΈ. ΠΠ΅ΡΠ²ΡΡ ΡΠ°ΡΡΡ ΠΌΠΎΠΆΠ½ΠΎ ΠΏΠΎΡΠΌΠΎΡΡΠ΅ΡΡ ΡΡΡ
Π‘ΠΎΠ΄Π΅ΡΠΆΠ°Π½ΠΈΠ΅:
Π¦ΠΈΠΊΠ»Ρ:
Π ΡΠ·ΡΠΊΠ΅ Kotlin ΠΎΡΡΡΡΡΡΠ²ΡΠ΅Ρ ΠΊΠ»Π°ΡΡΠΈΡΠ΅ΡΠΊΠΈΠΉ for Ρ ΡΡΠ΅ΠΌΡ ΡΠ°ΡΡΡΠΌΠΈ, ΠΊΠ°ΠΊ Π² Java. ΠΠΎΠΌΡ-ΡΠΎ ΡΡΠΎ ΠΌΠΎΠΆΠ΅Ρ ΠΏΠΎΠΊΠ°Π·Π°ΡΡΡΡ ΠΏΡΠΎΠ±Π»Π΅ΠΌΠΎΠΉ, Π½ΠΎ Π΅ΡΠ»ΠΈ ΠΏΠΎΠ΄ΡΠΎΠ±Π½Π΅Π΅ ΠΏΠΎΡΠΌΠΎΡΡΠ΅ΡΡ Π²ΡΠ΅ ΡΠ»ΡΡΠ°ΠΈ ΠΈΡΠΏΠΎΠ»ΡΠ·ΠΎΠ²Π°Π½ΠΈΡ ΡΠ°ΠΊΠΎΠ³ΠΎ ΡΠΈΠΊΠ»Π°, ΡΠΎ ΠΌΠΎΠΆΠ½ΠΎ ΡΠ²ΠΈΠ΄Π΅ΡΡ, ΡΡΠΎ ΠΏΠΎ Π±ΠΎΠ»ΡΡΠ΅ΠΉ ΡΠ°ΡΡΠΈ ΠΎΠ½ ΠΏΡΠΈΠΌΠ΅Π½ΡΠ΅ΡΡΡ ΠΊΠ°ΠΊ ΡΠ°Π· Π΄Π»Ρ ΠΏΠ΅ΡΠ΅Π±ΠΎΡΠ° Π·Π½Π°ΡΠ΅Π½ΠΈΠΉ. ΠΠ° ΡΠΌΠ΅Π½Ρ Π΅ΠΌΡ Π² Kotlin Π΅ΡΡΡ ΡΠΏΡΠΎΡΠ΅Π½Π½Π°Ρ ΠΊΠΎΠ½ΡΡΡΡΠΊΡΠΈΡ.
1..10 ΡΡΡ ΡΡΠΎ Π΄ΠΈΠ°ΠΏΠ°Π·ΠΎΠ½ ΠΏΠΎ ΠΊΠΎΡΠΎΡΠΎΠΌΡ ΠΏΡΠΎΠΈΡΡ ΠΎΠ΄ΠΈΡ ΠΈΡΠ΅ΡΠ°ΡΠΈΡ. ΠΠΎΠΌΠΏΠΈΠ»ΡΡΠΎΡ Kotlin Π΄ΠΎΡΡΠ°ΡΠΎΡΠ½ΠΎ ΡΠΌΠ½ΡΠΉ, ΠΎΠ½ ΠΏΠΎΠ½ΠΈΠΌΠ°Π΅Ρ ΡΡΠΎ ΠΌΡ ΡΠΎΠ±ΠΈΡΠ°Π΅ΠΌΡΡ Π² Π΄Π°Π½Π½ΠΎΠΌ ΡΠ»ΡΡΠ°Π΅ Π΄Π΅Π»Π°ΡΡ ΠΈ ΠΏΠΎΡΡΠΎΠΌΡ ΡΠ±ΠΈΡΠ°Π΅Ρ Π²Π΅ΡΡ Π»ΠΈΡΠ½ΠΈΠΉ ΠΎΠ²Π΅ΡΡ Π΅Π΄. ΠΠΎΠ΄ ΠΊΠΎΠΌΠΏΠΈΠ»ΠΈΡΡΠ΅ΡΡΡ Π² ΠΎΠ±ΡΡΠ½ΡΠΉ ΡΠΈΠΊΠ» while Ρ ΠΏΠ΅ΡΠ΅ΠΌΠ΅Π½Π½ΠΎΠΉ ΡΡΠ΅ΡΡΠΈΠΊΠ° ΡΠΈΠΊΠ»Π°. ΠΠΈΠΊΠ°ΠΊΠΈΡ ΠΈΡΠ΅ΡΠ°ΡΠΎΡΠΎΠ², Π½ΠΈΠΊΠ°ΠΊΠΎΠ³ΠΎ ΠΎΠ²Π΅ΡΡ Π΅Π΄Π°, Π²ΡΠ΅ Π΄ΠΎΡΡΠ°ΡΠΎΡΠ½ΠΎ ΠΊΠΎΠΌΠΏΠ°ΠΊΡΠ½ΠΎ.
ΠΠΎΡ ΠΎΠΆΠΈΠΉ ΡΠΈΠΊΠ» ΠΏΠΎ ΠΌΠ°ΡΡΠΈΠ²Ρ (ΠΊΠΎΡΠΎΡΡΠΉ Π² Kotlin Π·Π°ΠΏΠΈΡΡΠ²Π°Π΅ΡΡΡ Π² Π²ΠΈΠ΄Π΅ Array ), ΠΊΠΎΠΌΠΏΠΈΠ»ΠΈΡΡΠ΅ΡΡΡ Π°Π½Π°Π»ΠΎΠ³ΠΈΡΠ½ΡΠΌ ΠΎΠ±ΡΠ°Π·ΠΎΠΌ Π² ΡΠΈΠΊΠ» for.
ΠΠ΅ΠΌΠ½ΠΎΠ³ΠΎ Π΄ΡΡΠ³Π°Ρ ΡΠΈΡΡΠ°ΡΠΈΡ Π²ΠΎΠ·Π½ΠΈΠΊΠ°Π΅Ρ, ΠΊΠΎΠ³Π΄Π° ΠΏΡΠΎΠΈΡΡ ΠΎΠ΄ΠΈΡ ΠΏΠ΅ΡΠ΅Π±ΠΎΡ ΡΠ»Π΅ΠΌΠ΅Π½ΡΠΎΠ² ΠΈΠ· ΡΠΏΠΈΡΠΊΠ°:
Π ΡΡΠΎΠΌ ΡΠ»ΡΡΠ°Π΅ ΠΏΡΠΈΡ ΠΎΠ΄ΠΈΡΡΡ ΠΈΡΠΏΠΎΠ»ΡΠ·ΠΎΠ²Π°ΡΡ ΠΈΡΠ΅ΡΠ°ΡΠΎΡ:
Π’Π°ΠΊΠΈΠΌ ΠΎΠ±ΡΠ°Π·ΠΎΠΌ, Π² Π·Π°Π²ΠΈΡΠΈΠΌΠΎΡΡΠΈ ΠΎΡ ΡΠΎΠ³ΠΎ ΠΏΠΎ ΠΊΠ°ΠΊΠΈΠΌ ΡΠ»Π΅ΠΌΠ΅Π½ΡΠ°ΠΌ ΠΏΡΠΎΠΈΡΡ ΠΎΠ΄ΠΈΡ ΠΏΠ΅ΡΠ΅Π±ΠΎΡ, ΠΊΠΎΠΌΠΏΠΈΠ»ΡΡΠΎΡ Kotlin ΡΠ°ΠΌ Π²ΡΠ±ΠΈΡΠ°Π΅Ρ ΡΠ°ΠΌΡΠΉ ΡΡΡΠ΅ΠΊΡΠΈΠ²Π½ΡΠΉ ΡΠΏΠΎΡΠΎΠ± ΠΏΡΠ΅ΠΎΠ±ΡΠ°Π·ΠΎΠ²Π°ΡΡ ΡΠΈΠΊΠ» Π² Π±Π°ΠΉΡΠΊΠΎΠ΄.
ΠΠΈΠΆΠ΅ ΠΏΡΠΈΠ²Π΅Π΄Π΅Π½ΠΎ ΡΡΠ°Π²Π½Π΅Π½ΠΈΠ΅ ΠΏΡΠΎΠΈΠ·Π²ΠΎΠ΄ΠΈΡΠ΅Π»ΡΠ½ΠΎΡΡΠΈ Π΄Π»Ρ ΡΠΈΠΊΠ»ΠΎΠ² Ρ Π°Π½Π°Π»ΠΎΠ³ΠΈΡΠ½ΡΠΌΠΈ ΡΠ΅ΡΠ΅Π½ΠΈΡΠΌΠΈ Π² Java:
Π¦ΠΈΠΊΠ»Ρ
ΠΠ°ΠΊ Π²ΠΈΠ΄Π½ΠΎ ΡΠ°Π·Π½ΠΈΡΠ° ΠΌΠ΅ΠΆΠ΄Ρ Kotlin ΠΈ Java ΠΌΠΈΠ½ΠΈΠΌΠ°Π»ΡΠ½Π°. ΠΠ°ΠΉΡΠΊΠΎΠ΄ ΠΏΠΎΠ»ΡΡΠ°Π΅ΡΡΡ ΠΎΡΠ΅Π½Ρ Π±Π»ΠΈΠ·ΠΊΠΈΠΌ ΠΊ ΡΠΎΠΌΡ ΡΡΠΎ Π³Π΅Π½Π΅ΡΠΈΡΡΠ΅Ρ javac. ΠΠΎ ΡΠ»ΠΎΠ²Π°ΠΌ ΡΠ°Π·ΡΠ°Π±ΠΎΡΡΠΈΠΊΠΎΠ² ΠΎΠ½ΠΈ Π΅ΡΠ΅ ΠΏΠ»Π°Π½ΠΈΡΡΡΡ ΡΠ»ΡΡΡΠΈΡΡ ΡΡΠΎ Π² ΡΠ»Π΅Π΄ΡΡΡΠΈΡ Π²Π΅ΡΡΠΈΡΡ Kotlin, ΡΡΠΎΠ±Ρ ΡΠ΅Π·ΡΠ»ΡΡΠΈΡΡΡΡΠΈΠΉ Π±Π°ΠΉΡΠΊΠΎΠ΄ Π±ΡΠ» ΠΌΠ°ΠΊΡΠΈΠΌΠ°Π»ΡΠ½ΠΎ Π±Π»ΠΈΠ·ΠΎΠΊ ΠΊ ΡΠ΅ΠΌ ΠΏΠ°ΡΡΠ΅ΡΠ½Π°ΠΌ, ΠΊΠΎΡΠΎΡΡΠ΅ Π³Π΅Π½Π΅ΡΠΈΡΡΠ΅Ρ javac.
When β ΡΡΠΎ Π°Π½Π°Π»ΠΎΠ³ switch ΠΈΠ· Java, ΡΠΎΠ»ΡΠΊΠΎ Ρ Π±ΠΎΠ»ΡΡΠ΅ΠΉ ΡΡΠ½ΠΊΡΠΈΠΎΠ½Π°Π»ΡΠ½ΠΎΡΡΡΡ. Π Π°ΡΡΠΌΠΎΡΡΠΈΠΌ Π½ΠΈΠΆΠ΅ Π½Π΅ΡΠΊΠΎΠ»ΡΠΊΠΎ ΠΏΡΠΈΠΌΠ΅ΡΠΎΠ² ΠΈ ΡΠΎ, Π²ΠΎ ΡΡΠΎ ΠΎΠ½ΠΈ ΠΊΠΎΠΌΠΏΠΈΠ»ΠΈΡΡΡΡΡΡ:
ΠΠ»Ρ ΡΠ°ΠΊΠΎΠ³ΠΎ ΠΏΡΠΎΡΡΠΎΠ³ΠΎ ΡΠ»ΡΡΠ°Ρ ΡΠ΅Π·ΡΠ»ΡΡΠΈΡΡΡΡΠΈΠΉ ΠΊΠΎΠ΄ ΠΊΠΎΠΌΠΏΠΈΠ»ΠΈΡΡΠ΅ΡΡΡ Π² ΠΎΠ±ΡΡΠ½ΡΠΉ switch, ΡΡΡ Π½ΠΈΠΊΠ°ΠΊΠΎΠΉ ΠΌΠ°Π³ΠΈΠΈ Π½Π΅ ΠΏΡΠΎΠΈΡΡ ΠΎΠ΄ΠΈΡ:
ΠΡΠ»ΠΈ ΠΆΠ΅ Π½Π΅ΠΌΠ½ΠΎΠ³ΠΎ ΠΈΠ·ΠΌΠ΅Π½ΠΈΡΡ ΠΏΡΠΈΠΌΠ΅Ρ Π²ΡΡΠ΅, ΠΈ Π΄ΠΎΠ±Π°Π²ΠΈΡΡ ΠΊΠΎΠ½ΡΡΠ°Π½ΡΡ:
Π’ΠΎ ΠΊΠΎΠ΄ Π² ΡΡΠΎΠΌ ΡΠ»ΡΡΠ°Π΅ ΡΠΆΠ΅ ΠΊΠΎΠΌΠΏΠΈΠ»ΠΈΡΡΠ΅ΡΡΡ Π² ΡΠ»Π΅Π΄ΡΡΡΠΈΠΉ Π²ΠΈΠ΄:
ΠΡΠΎ ΠΏΡΠΎΠΈΡΡ ΠΎΠ΄ΠΈΡ ΠΏΠΎΡΠΎΠΌΡ, ΡΡΠΎ Π½Π° Π΄Π°Π½Π½ΡΠΉ ΠΌΠΎΠΌΠ΅Π½Ρ ΠΊΠΎΠΌΠΏΠΈΠ»ΡΡΠΎΡ Kotlin Π½Π΅ ΠΏΠΎΠ½ΠΈΠΌΠ°Π΅Ρ, ΡΡΠΎ Π·Π½Π°ΡΠ΅Π½ΠΈΡ ΡΠ²Π»ΡΡΡΡΡ ΠΊΠΎΠ½ΡΡΠ°Π½ΡΠ°ΠΌΠΈ, ΠΈ Π²ΠΌΠ΅ΡΡΠΎ ΠΏΡΠ΅ΠΎΠ±ΡΠ°Π·ΠΎΠ²Π°Π½ΠΈΡ ΠΊ switch, ΠΊΠΎΠ΄ ΠΏΡΠ΅ΠΎΠ±ΡΠ°Π·ΡΠ΅ΡΡΡ ΠΊ Π½Π°Π±ΠΎΡΡ ΡΡΠ°Π²Π½Π΅Π½ΠΈΠΉ. ΠΠΎΡΡΠΎΠΌΡ Π²ΠΌΠ΅ΡΡΠΎ ΠΊΠΎΠ½ΡΡΠ°Π½ΡΠ½ΠΎΠ³ΠΎ Π²ΡΠ΅ΠΌΠ΅Π½ΠΈ ΠΏΡΠΎΠΈΡΡ ΠΎΠ΄ΠΈΡ ΠΏΠ΅ΡΠ΅Ρ ΠΎΠ΄ ΠΊ Π»ΠΈΠ½Π΅ΠΉΠ½ΠΎΠΌΡ (Π² Π·Π°Π²ΠΈΡΠΈΠΌΠΎΡΡΠΈ ΠΎΡ ΠΊΠΎΠ»ΠΈΡΠ΅ΡΡΠ²Π° ΡΡΠ°Π²Π½Π΅Π½ΠΈΠΉ). ΠΠΎ ΡΠ»ΠΎΠ²Π°ΠΌ ΡΠ°Π·ΡΠ°Π±ΠΎΡΡΠΈΠΊΠΎΠ² ΡΠ·ΡΠΊΠ°, Π² Π±ΡΠ΄ΡΡΠ΅ΠΌ ΡΡΠΎ ΠΌΠΎΠΆΠ΅Ρ Π±ΡΡΡ Π»Π΅Π³ΠΊΠΎ ΠΈΡΠΏΡΠ°Π²Π»Π΅Π½ΠΎ, Π½ΠΎ Π² ΡΠ΅ΠΊΡΡΠ΅ΠΉ Π²Π΅ΡΡΠΈΠΈ ΡΡΠΎ ΠΏΠΎΠΊΠ° ΡΠ°ΠΊ.
Π‘ΡΡΠ΅ΡΡΠ²ΡΠ΅Ρ ΡΠ°ΠΊΠΆΠ΅ Π²ΠΎΠ·ΠΌΠΎΠΆΠ½ΠΎΡΡΡ ΠΈΡΠΏΠΎΠ»ΡΠ·ΠΎΠ²Π°ΡΡ ΠΌΠΎΠ΄ΠΈΡΠΈΠΊΠ°ΡΠΎΡ const Π΄Π»Ρ ΠΊΠΎΠ½ΡΡΠ°Π½Ρ, ΠΈΠ·Π²Π΅ΡΡΠ½ΡΡ Π½Π° ΠΌΠΎΠΌΠ΅Π½Ρ ΠΊΠΎΠΌΠΏΠΈΠ»ΡΡΠΈΠΈ.
Π’ΠΎΠ³Π΄Π° Π² ΡΡΠΎΠΌ ΡΠ»ΡΡΠ°Π΅ ΠΊΠΎΠΌΠΏΠΈΠ»ΡΡΠΎΡ ΡΠΆΠ΅ ΠΏΡΠ°Π²ΠΈΠ»ΡΠ½ΠΎ ΠΎΠΏΡΠΈΠΌΠΈΠ·ΠΈΡΡΠ΅Ρ when:
ΠΡΠ»ΠΈ ΠΆΠ΅ Π·Π°ΠΌΠ΅Π½ΠΈΡΡ ΠΊΠΎΠ½ΡΡΠ°Π½ΡΡ Π½Π° Enum:
Π’ΠΎ ΠΊΠΎΠ΄, ΡΠ°ΠΊΠΆΠ΅ ΠΊΠ°ΠΊ Π² ΠΏΠ΅ΡΠ²ΠΎΠΌ ΡΠ»ΡΡΠ°Π΅, Π±ΡΠ΄Π΅Ρ ΠΊΠΎΠΌΠΏΠΈΠ»ΠΈΡΠΎΠ²Π°ΡΡΡΡ Π² switch (ΠΏΡΠ°ΠΊΡΠΈΡΠ΅ΡΠΊΠΈΠΉ ΡΠ°ΠΊΠΎΠΉ ΠΆΠ΅ ΠΊΠ°ΠΊ Π² ΡΠ»ΡΡΠ°Π΅ ΠΏΠ΅ΡΠ΅Π±ΠΎΡΠ° enum Π² Java).
ΠΠΎ ordinal Π½ΠΎΠΌΠ΅ΡΡ ΡΠ»Π΅ΠΌΠ΅Π½ΡΠ° ΠΎΠΏΡΠ΅Π΄Π΅Π»ΡΠ΅ΡΡΡ Π½ΠΎΠΌΠ΅Ρ Π²Π΅ΡΠΊΠΈ Π² switch, ΠΏΠΎ ΠΊΠΎΡΠΎΡΠΎΠΌΡ Π΄Π°Π»Π΅Π΅ ΠΈ ΠΏΡΠΎΠΈΡΡ ΠΎΠ΄ΠΈΡ Π²ΡΠ±ΠΎΡ Π½ΡΠΆΠ½ΠΎΠΉ Π²Π΅ΡΠ²ΠΈ.
ΠΠΎΡΠΌΠΎΡΡΠΈΠΌ Π½Π° ΡΡΠ°Π²Π½Π΅Π½ΠΈΠ΅ ΠΏΡΠΎΠΈΠ·Π²ΠΎΠ΄ΠΈΡΠ΅Π»ΡΠ½ΠΎΡΡΠΈ ΡΠ΅ΡΠ΅Π½ΠΈΠΉ Π½Π° Kotlin ΠΈ Java:
ΠΠ°ΠΊ Π²ΠΈΠ΄Π½ΠΎ ΠΏΡΠΎΡΡΠΎΠΉ switch ΡΠ°Π±ΠΎΡΠ°Π΅Ρ ΡΠΎΡΠ½ΠΎ ΡΠ°ΠΊΠΆΠ΅. Π ΡΠ»ΡΡΠ°Π΅, ΠΊΠΎΠ³Π΄Π° ΠΊΠΎΠΌΠΏΠΈΠ»ΡΡΠΎΡ Kotlin Π½Π΅ ΡΠΌΠΎΠ³ ΠΎΠΏΡΠ΅Π΄Π΅Π»ΠΈΡΡ ΡΡΠΎ ΠΏΠ΅ΡΠ΅ΠΌΠ΅Π½Π½ΡΠ΅ ΠΊΠΎΠ½ΡΡΠ°Π½ΡΡ ΠΈ ΠΏΠ΅ΡΠ΅ΡΠ΅Π» ΠΊ ΡΡΠ°Π²Π½Π΅Π½ΠΈΡΠΌ, Java ΡΠ°Π±ΠΎΡΠ°Π΅Ρ ΡΡΡΡ Π±ΡΡΡΡΠ΅Π΅. Π Π² ΡΠΈΡΡΠ°ΡΠΈΠΈ, ΠΊΠΎΠ³Π΄Π° ΠΏΠ΅ΡΠ΅Π±ΠΈΡΠ°Π΅ΠΌ Π·Π½Π°ΡΠ΅Π½ΠΈΡ enum, ΡΠ°ΠΊΠΆΠ΅ Π΅ΡΡΡ Π½Π΅Π±ΠΎΠ»ΡΡΠ°Ρ ΠΏΠΎΡΠ΅ΡΡ Π½Π° Π²ΠΎΠ·Π½Ρ Ρ ΠΎΠΏΡΠ΅Π΄Π΅Π»Π΅Π½ΠΈΠ΅ΠΌ Π²Π΅ΡΠ²ΠΈ ΠΏΠΎ Π·Π½Π°ΡΠ΅Π½ΠΈΡ ordinal. ΠΠΎ Π²ΡΠ΅ ΡΡΠΈ Π½Π΅Π΄ΠΎΡΡΠ°ΡΠΊΠΈ Π±ΡΠ΄ΡΡ ΠΈΡΠΏΡΠ°Π²Π»Π΅Π½Ρ Π² Π±ΡΠ΄ΡΡΠΈΡ Π²Π΅ΡΡΠΈΡΡ , ΠΈ ΠΊ ΡΠΎΠΌΡ ΠΆΠ΅ ΠΏΠΎΡΠ΅ΡΡ Π² ΠΏΡΠΎΠΈΠ·Π²ΠΎΠ΄ΠΈΡΠ΅Π»ΡΠ½ΠΎΡΡΠΈ Π½Π΅ ΠΎΡΠ΅Π½Ρ Π±ΠΎΠ»ΡΡΠ°Ρ, Π° Π² ΠΊΡΠΈΡΠΈΡΠ½ΡΡ ΠΌΠ΅ΡΡΠ°Ρ ΠΌΠΎΠΆΠ½ΠΎ ΠΏΠ΅ΡΠ΅ΠΏΠΈΡΠ°ΡΡ ΠΊΠΎΠ΄ Π½Π° Π΄ΡΡΠ³ΠΎΠΉ Π²Π°ΡΠΈΠ°Π½Ρ. ΠΠΏΠΎΠ»Π½Π΅ ΡΠ°Π·ΡΠΌΠ½Π°Ρ ΡΠ΅Π½Π° Π·Π° ΡΠ΄ΠΎΠ±ΡΡΠ²ΠΎ ΠΈΡΠΏΠΎΠ»ΡΠ·ΠΎΠ²Π°Π½ΠΈΡ.
ΠΠ΅Π»Π΅Π³Π°ΡΡ
ΠΠ΅Π»Π΅Π³ΠΈΡΠΎΠ²Π°Π½ΠΈΠ΅ β ΡΡΠΎ Ρ ΠΎΡΠΎΡΠ°Ρ Π°Π»ΡΡΠ΅ΡΠ½Π°ΡΠΈΠ²Π° Π½Π°ΡΠ»Π΅Π΄ΠΎΠ²Π°Π½ΠΈΡ, ΠΈ Kotlin ΠΏΠΎΠ΄Π΄Π΅ΡΠΆΠΈΠ²Π°Π΅Ρ Π΅Π³ΠΎ ΠΏΡΡΠΌΠΎ ΠΈΠ· ΠΊΠΎΡΠΎΠ±ΠΊΠΈ. Π Π°ΡΡΠΌΠΎΡΡΠΈΠΌ ΠΏΡΠΎΡΡΠΎΠΉ ΠΏΡΠΈΠΌΠ΅Ρ Ρ Π΄Π΅Π»Π΅Π³ΠΈΡΠΎΠ²Π°Π½ΠΈΠ΅ΠΌ ΠΊΠ»Π°ΡΡΠ°:
ΠΠ»Π°ΡΡ Derived Π² ΠΊΠΎΠ½ΡΡΡΡΠΊΡΠΎΡΠ΅ ΠΏΠΎΠ»ΡΡΠ°Π΅Ρ ΡΠΊΠ·Π΅ΠΌΠΏΠ»ΡΡ ΠΊΠ»Π°ΡΡΠ°, ΡΠ΅Π°Π»ΠΈΠ·ΡΡΡΠΈΠΉ ΠΈΠ½ΡΠ΅ΡΡΠ΅ΠΉΡ Base, ΠΈ Π² ΡΠ²ΠΎΡ ΠΎΡΠ΅ΡΠ΅Π΄Ρ Π΄Π΅Π»Π΅Π³ΠΈΡΡΠ΅Ρ ΡΠ΅Π°Π»ΠΈΠ·Π°ΡΠΈΡ Π²ΡΠ΅Ρ ΠΌΠ΅ΡΠΎΠ΄ΠΎΠ² ΠΈΠ½ΡΠ΅ΡΡΠ΅ΠΉΡΠ° Base ΠΊ ΠΏΠ΅ΡΠ΅Π΄Π°Π²Π°Π΅ΠΌΠΎΠΌΡ ΡΠΊΠ·Π΅ΠΌΠΏΠ»ΡΡΡ. ΠΠ΅ΠΊΠΎΠΌΠΏΠΈΠ»ΠΈΡΠΎΠ²Π°Π½Π½ΡΠΉ ΠΊΠΎΠ΄ ΠΊΠ»Π°ΡΡΠ° Derived Π±ΡΠ΄Π΅Ρ Π²ΡΠ³Π»ΡΠ΄Π΅ΡΡ ΡΠ»Π΅Π΄ΡΡΡΠΈΠΌ ΠΎΠ±ΡΠ°Π·ΠΎΠΌ:
Π ΠΊΠΎΠ½ΡΡΡΡΠΊΡΠΎΡ ΠΊΠ»Π°ΡΡΠ° ΠΏΠ΅ΡΠ΅Π΄Π°Π΅ΡΡΡ ΡΠΊΠ·Π΅ΠΌΠΏΠ»ΡΡ ΠΊΠ»Π°ΡΡΠ°, ΠΊΠΎΡΠΎΡΡΠΉ Π·Π°ΠΏΠΎΠΌΠΈΠ½Π°Π΅ΡΡΡ Π² Π½Π΅ΠΈΠ·ΠΌΠ΅Π½ΡΠ΅ΠΌΠΎΠΌ Π²Π½ΡΡΡΠ΅Π½Π½Π΅ΠΌ ΠΏΠΎΠ»Π΅. Π’Π°ΠΊΠΆΠ΅ ΠΏΠ΅ΡΠ΅ΠΎΠΏΡΠ΅Π΄Π΅Π»ΡΠ΅ΡΡΡ ΠΌΠ΅ΡΠΎΠ΄ print ΠΈΠ½ΡΠ΅ΡΡΠ΅ΠΉΡΠ° Base, Π² ΠΊΠΎΡΠΎΡΠΎΠΌ ΠΏΡΠΎΡΡΠΎ ΠΏΡΠΎΠΈΡΡ ΠΎΠ΄ΠΈΡ Π²ΡΠ·ΠΎΠ² ΠΌΠ΅ΡΠΎΠ΄Π° ΠΈΠ· Π΄Π΅Π»Π΅Π³Π°ΡΠ°. ΠΡΠ΅ Π΄ΠΎΡΡΠ°ΡΠΎΡΠ½ΠΎ ΠΏΡΠΎΡΡΠΎ.
Π‘ΡΡΠ΅ΡΡΠ²ΡΠ΅Ρ ΡΠ°ΠΊΠΆΠ΅ Π²ΠΎΠ·ΠΌΠΎΠΆΠ½ΠΎΡΡΡ Π΄Π΅Π»Π΅Π³ΠΈΡΠΎΠ²Π°ΡΡ Π½Π΅ ΡΠΎΠ»ΡΠΊΠΎ ΡΠ΅Π°Π»ΠΈΠ·Π°ΡΠΈΡ Π²ΡΠ΅Π³ΠΎ ΠΊΠ»Π°ΡΡΠ°, Π½ΠΎ ΠΈ ΠΎΡΠ΄Π΅Π»ΡΠ½ΡΡ Π΅Π³ΠΎ ΡΠ²ΠΎΠΉΡΡΠ² (Π° Ρ Π²Π΅ΡΡΠΈΠΈ 1.1 Π΅ΡΠ΅ Π²ΠΎΠ·ΠΌΠΎΠΆΠ½ΠΎ Π΄Π΅Π»Π΅Π³ΠΈΡΠΎΠ²Π°ΡΡ ΠΈΠ½ΠΈΡΠΈΠ°Π»ΠΈΠ·Π°ΡΠΈΡ Π² Π»ΠΎΠΊΠ°Π»ΡΠ½ΡΡ ΠΏΠ΅ΡΠ΅ΠΌΠ΅Π½Π½ΡΡ ).
ΠΠΎΠΌΠΏΠΈΠ»ΠΈΡΡΠ΅ΡΡΡ Π² ΠΊΠΎΠ΄:
ΠΡΠΈ ΠΈΠ½ΠΈΡΠΈΠ°Π»ΠΈΠ·Π°ΡΠΈΠΈ ΠΊΠ»Π°ΡΡΠ° DeleteExample ΡΠΎΠ·Π΄Π°Π΅ΡΡΡ ΡΠΊΠ·Π΅ΠΌΠΏΠ»ΡΡ ΠΊΠ»Π°ΡΡΠ° Delegate, ΡΠΎΡ ΡΠ°Π½ΡΠ΅ΠΌΡΠΉ Π² ΠΏΠΎΠ»Π΅ name$delegate. Π Π΄Π°Π»Π΅Π΅ Π²ΡΠ·ΠΎΠ² ΡΡΠ½ΠΊΡΠΈΠΈ getName ΠΏΠ΅ΡΠ΅Π°Π΄ΡΠ΅ΡΠΎΠ²ΡΠ²Π°Π΅ΡΡΡ ΠΊ Π²ΡΠ·ΠΎΠ²Ρ ΡΡΠ½ΠΊΡΠΈΠΈ getValue ΠΈΠ· name$delegate.
Π Kotlin Π΅ΡΡΡ ΡΠΆΠ΅ Π½Π΅ΡΠΊΠΎΠ»ΡΠΊΠΎ ΡΡΠ°Π½Π΄Π°ΡΡΠ½ΡΡ Π΄Π΅Π»Π΅Π³Π°ΡΠΎΠ²:
β lazy, Π΄Π»Ρ Π»Π΅Π½ΠΈΠ²ΡΡ
Π²ΡΡΠΈΡΠ»Π΅Π½ΠΈΠΉ Π·Π½Π°ΡΠ΅Π½ΠΈΡ ΠΏΠΎΠ»Ρ.
β observable, ΠΊΠΎΡΠΎΡΡΠΉ ΠΏΠΎΠ·Π²ΠΎΠ»ΡΠ΅Ρ ΠΏΠΎΠ»ΡΡΠ°ΡΡ ΡΠ²Π΅Π΄ΠΎΠΌΠ»Π΅Π½ΠΈΡ ΠΎΠ±ΠΎ Π²ΡΠ΅Ρ
ΠΈΠ·ΠΌΠ΅Π½Π΅Π½ΠΈΡ Π·Π½Π°ΡΠ΅Π½ΠΈΡ ΠΏΠΎΠ»Ρ
β map, ΠΈΡΠΏΠΎΠ»ΡΠ·ΡΠ΅ΠΌΡΠΉ Π΄Π»Ρ ΠΈΠ½ΠΈΡΠΈΠ°Π»ΠΈΠ·Π°ΡΠΈΠΈ Π·Π½Π°ΡΠ΅Π½ΠΈΠΉ ΠΏΠΎΠ»Ρ ΠΈΠ· Π·Π½Π°ΡΠ΅Π½ΠΈΠΉ Map.
Object ΠΈ companion object
Π Kotlin Π½Π΅Ρ ΠΌΠΎΠ΄ΠΈΡΠΈΠΊΠ°ΡΠΎΡΠ° static Π΄Π»Ρ ΠΌΠ΅ΡΠΎΠ΄ΠΎΠ² ΠΈ ΠΏΠΎΠ»Π΅ΠΉ. ΠΠΌΠ΅ΡΡΠΎ Π½ΠΈΡ , ΠΏΠΎ Π±ΠΎΠ»ΡΡΠ΅ΠΉ ΡΠ°ΡΡΠΈ, ΡΠ΅ΠΊΠΎΠΌΠ΅Π½Π΄ΡΠ΅ΡΡΡ ΠΈΡΠΏΠΎΠ»ΡΠ·ΠΎΠ²Π°ΡΡ ΡΡΠ½ΠΊΡΠΈΠΈ Π½Π° ΡΡΠΎΠ²Π½Π΅ ΡΠ°ΠΉΠ»Π°. ΠΡΠ»ΠΈ ΠΆΠ΅ Π½ΡΠΆΠ½ΠΎ ΠΎΠ±ΡΡΠ²ΠΈΡΡ ΡΡΠ½ΠΊΡΠΈΠΈ, ΠΊΠΎΡΠΎΡΡΠ΅ ΠΌΠΎΠΆΠ½ΠΎ Π²ΡΠ·ΡΠ²Π°ΡΡ Π±Π΅Π· ΡΠΊΠ·Π΅ΠΌΠΏΠ»ΡΡΠ° ΠΊΠ»Π°ΡΡΠ°, ΡΠΎ Π΄Π»Ρ ΡΡΠΎΠ³ΠΎ Π΅ΡΡΡ object ΠΈ companion object. Π Π°ΡΡΠΌΠΎΡΡΠΈΠΌ Π½Π° ΠΏΡΠΈΠΌΠ΅ΡΠ°Ρ ΠΊΠ°ΠΊ ΠΎΠ½ΠΈ Π²ΡΠ³Π»ΡΠ΄ΡΡ Π² Π±Π°ΠΉΡΠΊΠΎΠ΄Π΅:
ΠΡΠΎΡΡΠΎΠ΅ ΠΎΠ±ΡΡΠ²Π»Π΅Π½ΠΈΠ΅ object Ρ ΠΎΠ΄Π½ΠΈΠΌ ΠΌΠ΅ΡΠΎΠ΄ΠΎΠΌ Π²ΡΠ³Π»ΡΠ΄ΠΈΡ ΡΠ»Π΅Π΄ΡΡΡΠΈΠΌ ΠΎΠ±ΡΠ°Π·ΠΎΠΌ:
Π ΠΊΠΎΠ΄Π΅ Π΄Π°Π»ΡΡΠ΅ ΠΌΠΎΠΆΠ½ΠΎ ΠΎΠ±ΡΠ°ΡΠ°ΡΡΡΡ ΠΊ ΠΌΠ΅ΡΠΎΠ΄Ρ objectFun Π±Π΅Π· ΡΠΎΠ·Π΄Π°Π½ΠΈΡ ΡΠΊΠ·Π΅ΠΌΠΏΠ»ΡΡΠ° ObjectExample. ΠΠΎΠ΄ ΠΊΠΎΠΌΠΏΠΈΠ»ΠΈΡΡΠ΅ΡΡΡ Π² ΠΏΡΠ°ΠΊΡΠΈΡΠ΅ΡΠΊΠΈ ΠΊΠ°Π½ΠΎΠ½ΠΈΡΠ½ΡΠΉ ΡΠΈΠ½Π³Π»ΡΠΎΠ½:
ΠΠΎΠΌΠΏΠΈΠ»ΠΈΡΡΠ΅ΡΡΡ ΠΊ Π²ΡΠ·ΠΎΠ²Ρ INSTANCE:
companion object ΠΈΡΠΏΠΎΠ»ΡΠ·ΡΠ΅ΡΡΡ Π΄Π»Ρ ΡΠΎΠ·Π΄Π°Π½ΠΈΡ Π°Π½Π°Π»ΠΎΠ³ΠΈΡΠ½ΡΡ ΠΌΠ΅ΡΠΎΠ΄ΠΎΠ² ΡΠΎΠ»ΡΠΊΠΎ ΡΠΆΠ΅ Π² ΠΊΠ»Π°ΡΡΠ΅, Π΄Π»Ρ ΠΊΠΎΡΠΎΡΠΎΠ³ΠΎ ΠΏΡΠ΅Π΄ΠΏΠΎΠ»Π°Π³Π°Π΅ΡΡΡ ΡΠΎΠ·Π΄Π°Π½ΠΈΠ΅ ΡΠΊΠ·Π΅ΠΌΠΏΠ»ΡΡΠΎΠ².
ΠΠ±ΡΠ°ΡΠ΅Π½ΠΈΠ΅ ΠΊ ΠΌΠ΅ΡΠΎΠ΄Ρ companionFun ΡΠ°ΠΊΠΆΠ΅ Π½Π΅ ΡΡΠ΅Π±ΡΠ΅Ρ ΡΠΎΠ·Π΄Π°Π½ΠΈΡ ΡΠΊΠ·Π΅ΠΌΠΏΠ»ΡΡΠ° ΠΊΠ»Π°ΡΡΠ°, ΠΈ Π² Kotlin Π±ΡΠ΄Π΅Ρ Π²ΡΠ³Π»ΡΠ΄Π΅ΡΡ ΠΊΠ°ΠΊ ΠΏΡΠΎΡΡΠΎΠ΅ ΠΎΠ±ΡΠ°ΡΠ΅Π½ΠΈΠ΅ ΠΊ ΡΡΠ°ΡΠΈΡΠ΅ΡΠΊΠΎΠΌΡ ΠΌΠ΅ΡΠΎΠ΄Ρ. ΠΠΎ Π½Π° ΡΠ°ΠΌΠΎΠΌ Π΄Π΅Π»Π΅ ΠΏΡΠΎΠΈΡΡ ΠΎΠ΄ΠΈΡ ΠΎΠ±ΡΠ°ΡΠ΅Π½ΠΈΠ΅ ΠΊ ΠΊΠΎΠΌΠΏΠ°Π½ΡΠΎΠ½Ρ ΠΊΠ»Π°ΡΡΠ°. ΠΠΎΡΠΌΠΎΡΡΠΈΠΌ Π΄Π΅ΠΊΠΎΠΌΠΏΠΈΠ»ΠΈΡΠΎΠ²Π°Π½Π½ΡΠΉ ΠΊΠΎΠ΄:
ΠΠΎΠΌΠΏΠΈΠ»ΡΡΠΎΡ Kotlin ΡΠΏΡΠΎΡΠ°Π΅Ρ Π²ΡΠ·ΠΎΠ²Ρ, Π½ΠΎ ΠΈΠ· Java, ΠΏΡΠ°Π²Π΄Π°, Π²ΡΠ³Π»ΡΠ΄ΠΈΡ ΡΠΆΠ΅ Π½Π΅ ΡΠ°ΠΊ ΠΊΡΠ°ΡΠΈΠ²ΠΎ. Π ΡΡΠ°ΡΡΡΡ, Π΅ΡΡΡ Π²ΠΎΠ·ΠΌΠΎΠΆΠ½ΠΎΡΡΡ ΠΎΠ±ΡΡΠ²ΠΈΡΡ ΠΌΠ΅ΡΠΎΠ΄Ρ ΠΏΠΎ Π½Π°ΡΡΠΎΡΡΠ΅ΠΌΡ ΡΡΠ°ΡΠΈΡΠ΅ΡΠΊΠΈΠΌΠΈ. ΠΠ»Ρ ΡΡΠΎΠ³ΠΎ ΡΡΡΠ΅ΡΡΠ²ΡΠ΅Ρ Π°Π½Π½ΠΎΡΠ°ΡΠΈΡ @JvmStatic. ΠΠ΅ ΠΌΠΎΠΆΠ½ΠΎ Π΄ΠΎΠ±Π°Π²ΠΈΡΡ ΠΊΠ°ΠΊ ΠΊ ΠΌΠ΅ΡΠΎΠ΄Π°ΠΌ object, ΡΠ°ΠΊ ΠΈ ΠΊ ΠΌΠ΅ΡΠΎΠ΄Π°ΠΌ companion object. Π Π°ΡΡΠΌΠΎΡΡΠΈΠΌ Π½Π° ΠΏΡΠΈΠΌΠ΅ΡΠ΅ object:
Π ΡΡΠΎΠΌ ΡΠ»ΡΡΠ°Π΅ ΠΌΠ΅ΡΠΎΠ΄ staticFun Π±ΡΠ΄Π΅Ρ Π΄Π΅ΠΉΡΡΠ²ΠΈΡΠ΅Π»ΡΠ½ΠΎ ΠΎΠ±ΡΡΠ²Π»Π΅Π½ ΡΡΠ°ΡΠΈΡΠ΅ΡΠΊΠΈΠΌ:
ΠΠ»Ρ ΠΌΠ΅ΡΠΎΠ΄ΠΎΠ² ΠΈΠ· companion object ΡΠΎΠΆΠ΅ ΠΌΠΎΠΆΠ½ΠΎ Π΄ΠΎΠ±Π°Π²ΠΈΡΡ Π°Π½Π½ΠΎΡΠ°ΡΠΈΡ @JvmStatic:
ΠΠ»Ρ ΡΠ°ΠΊΠΎΠ³ΠΎ ΠΊΠΎΠ΄Π° Π±ΡΠ΄Π΅Ρ ΡΠ°ΠΊΠΆΠ΅ ΡΠΎΠ·Π΄Π°Π½ ΡΡΠ°ΡΠΈΡΠ½ΡΠΉ ΠΌΠ΅ΡΠΎΠ΄ companionFun. ΠΠΎ ΡΠ°ΠΌ ΠΌΠ΅ΡΠΎΠ΄ Π²ΡΠ΅ ΡΠ°Π²Π½ΠΎ Π±ΡΠ΄Π΅Ρ Π²ΡΠ·ΡΠ²Π°ΡΡ ΠΌΠ΅ΡΠΎΠ΄ ΠΈΠ· ΠΊΠΎΠΌΠΏΠ°Π½ΡΠΎΠ½Π°:
ΠΠ°ΠΊ ΠΏΠΎΠΊΠ°Π·Π°Π½ΠΎ Π²ΡΡΠ΅, Kotlin ΠΏΡΠ΅Π΄ΠΎΡΡΠ°Π²Π»ΡΠ΅Ρ ΡΠ°Π·Π»ΠΈΡΠ½ΡΠ΅ Π²ΠΎΠ·ΠΌΠΎΠΆΠ½ΠΎΡΡΠΈ Π΄Π»Ρ ΠΎΠ±ΡΡΠ²Π»Π΅Π½ΠΈΡ ΠΊΠ°ΠΊ ΡΡΠ°ΡΠΈΡΠ΅ΡΠΊΠΈΡ ΠΌΠ΅ΡΠΎΠ΄ΠΎΠ² ΡΠ°ΠΊ ΠΈ ΠΌΠ΅ΡΠΎΠ΄ΠΎΠ² ΠΊΠΎΠΌΠΏΠ°Π½ΡΠΎΠ½ΠΎΠ². ΠΡΠ·ΠΎΠ² ΡΡΠ°ΡΠΈΡΠ΅ΡΠΊΠΈΡ ΠΌΠ΅ΡΠΎΠ΄ΠΎΠ² ΡΡΡΡ Π±ΡΡΡΡΠ΅Π΅, ΠΏΠΎΡΡΠΎΠΌΡ Π² ΠΌΠ΅ΡΡΠ°Ρ , Π³Π΄Π΅ Π²Π°ΠΆΠ½Π° ΠΏΡΠΎΠΈΠ·Π²ΠΎΠ΄ΠΈΡΠ΅Π»ΡΠ½ΠΎΡΡΡ, Π²ΡΠ΅ ΠΆΠ΅ Π»ΡΡΡΠ΅ ΡΡΠ°Π²ΠΈΡΡ Π°Π½Π½ΠΎΡΠ°ΡΠΈΠΈ @JvmStatic Π½Π° ΠΌΠ΅ΡΠΎΠ΄Ρ (Π½ΠΎ Π²ΡΠ΅ ΡΠ°Π²Π½ΠΎ Π½Π΅ ΡΡΠΎΠΈΡ ΡΠ°ΡΡΡΠΈΡΡΠ²Π°ΡΡ Π½Π° Π±ΠΎΠ»ΡΡΠΎΠΉ Π²ΡΠΈΠ³ΡΡΡ Π² Π±ΡΡΡΡΠΎΠ΄Π΅ΠΉΡΡΠ²ΠΈΠΈ)
lateinit ΡΠ²ΠΎΠΉΡΡΠ²Π°
ΠΠ½ΠΎΠ³Π΄Π° Π²ΠΎΠ·Π½ΠΈΠΊΠ°Π΅Ρ ΡΠΈΡΡΠ°ΡΠΈΡ, ΠΊΠΎΠ³Π΄Π° Π½ΡΠΆΠ½ΠΎ ΠΎΠ±ΡΡΠ²ΠΈΡΡ notnull ΡΠ²ΠΎΠΉΡΡΠ²ΠΎ Π² ΠΊΠ»Π°ΡΡΠ΅, Π·Π½Π°ΡΠ΅Π½ΠΈΠ΅ Π΄Π»Ρ ΠΊΠΎΡΠΎΡΠΎΠ³ΠΎ ΠΌΡ Π½Π΅ ΠΌΠΎΠΆΠ΅ΠΌ ΡΡΠ°Π·Ρ ΡΠΊΠ°Π·Π°ΡΡ. ΠΠΎ ΠΏΡΠΈ ΠΈΠ½ΠΈΡΠΈΠ°Π»ΠΈΠ·Π°ΡΠΈΠΈ notnull ΠΏΠΎΠ»Ρ ΠΌΡ ΠΎΠ±ΡΠ·Π°Π½Ρ ΠΏΡΠΈΡΠ²ΠΎΠΈΡΡ Π΅ΠΌΡ Π·Π½Π°ΡΠ΅Π½ΠΈΠ΅ ΠΏΠΎ ΡΠΌΠΎΠ»ΡΠ°Π½ΠΈΡ, Π»ΠΈΠ±ΠΎ ΡΠ΄Π΅Π»Π°ΡΡ ΡΠ²ΠΎΠΉΡΡΠ²ΠΎ Nullable ΠΈ Π·Π°ΠΏΠΈΡΠ°ΡΡ Π² Π½Π΅Π³ΠΎ null. Π§ΡΠΎΠ±Ρ Π½Π΅ ΠΏΠ΅ΡΠ΅Ρ ΠΎΠ΄ΠΈΡΡ ΠΊ nullable, Π² Kotlin ΡΡΡΠ΅ΡΡΠ²ΡΠ΅Ρ ΡΠΏΠ΅ΡΠΈΠ°Π»ΡΠ½ΡΠΉ ΠΌΠΎΠ΄ΠΈΡΠΈΠΊΠ°ΡΠΎΡ lateinit, ΠΊΠΎΡΠΎΡΡΠΉ Π³ΠΎΠ²ΠΎΡΠΈΡ ΠΊΠΎΠΌΠΏΠΈΠ»ΡΡΠΎΡΡ Kotlin ΠΎ ΡΠΎΠΌ, ΡΡΠΎ ΠΌΡ ΠΎΠ±ΡΠ·ΡΠ΅ΠΌΡΡ ΡΠ°ΠΌΠΈ ΠΏΠΎΠ·Π΄Π½Π΅Π΅ ΠΈΠ½ΠΈΡΠΈΠ°Π»ΠΈΠ·ΠΈΡΠΎΠ²Π°ΡΡ ΡΠ²ΠΎΠΉΡΡΠ²ΠΎ.
ΠΡΠ»ΠΈ ΠΆΠ΅ ΠΌΡ ΠΏΠΎΠΏΡΠΎΠ±ΡΠ΅ΠΌ ΠΎΠ±ΡΠ°ΡΠΈΡΡΡΡ ΠΊ ΡΠ²ΠΎΠΉΡΡΠ²Ρ Π±Π΅Π· ΠΈΠ½ΠΈΡΠΈΠ°Π»ΠΈΠ·Π°ΡΠΈΠΈ, ΡΠΎ Π±ΡΠ΄Π΅Ρ Π±ΡΠΎΡΠ΅Π½ΠΎ ΠΈΡΠΊΠ»ΡΡΠ΅Π½ΠΈΠ΅ UninitializedPropertyAccessException. ΠΠΎΠ΄ΠΎΠ±Π½Π°Ρ ΡΡΠ½ΠΊΡΠΈΠΎΠ½Π°Π»ΡΠ½ΠΎΡΡΡ ΡΠ°Π±ΠΎΡΠ°Π΅Ρ Π΄ΠΎΡΡΠ°ΡΠΎΡΠ½ΠΎ ΠΏΡΠΎΡΡΠΎ:
Π getter Π²ΡΡΠ°Π²Π»ΡΠ΅ΡΡΡ Π΄ΠΎΠΏΠΎΠ»Π½ΠΈΡΠ΅Π»ΡΠ½Π°Ρ ΠΏΡΠΎΠ²Π΅ΡΠΊΠ° Π·Π½Π°ΡΠ΅Π½ΠΈΡ ΡΠ²ΠΎΠΉΡΡΠ²Π°, ΠΈ Π΅ΡΠ»ΠΈ Π² Π½Π΅ΠΌ Ρ ΡΠ°Π½ΠΈΡΡΡ null, ΡΠΎ ΠΊΠΈΠ΄Π°Π΅ΡΡΡ ΠΈΡΠΊΠ»ΡΡΠ΅Π½ΠΈΠ΅. ΠΡΡΠ°ΡΠΈ ΠΈΠΌΠ΅Π½Π½ΠΎ ΠΈΠ·-Π·Π° ΡΡΠΎΠ³ΠΎ Π² Kotlin Π½Π΅Π»ΡΠ·Ρ ΡΠ΄Π΅Π»Π°ΡΡ lateinit ΡΠ²ΠΎΠΉΡΡΠ²ΠΎ Ρ ΡΠΈΠΏΠΎΠΌ Int, Long ΠΈ Π΄ΡΡΠ³ΠΈΡ ΡΠΈΠΏΠΎΠ², ΠΊΠΎΡΠΎΡΡΠ΅ ΡΠΎΠΎΡΠ²Π΅ΡΡΡΠ²ΡΡΡ ΠΏΡΠΈΠΌΠΈΡΠΈΠ²Π½ΡΠΌ ΡΠΈΠΏΠ°ΠΌ Java.
coroutines
Π Π²Π΅ΡΡΠΈΠΈ Kotlin 1.1 ΠΏΠΎΡΠ²ΠΈΠ»Π°ΡΡ Π½ΠΎΠ²Π°Ρ ΡΡΠ½ΠΊΡΠΈΠΎΠ½Π°Π»ΡΠ½ΠΎΡΡΡ, Π½Π°Π·ΡΠ²Π°Π΅ΠΌΠ°Ρ ΠΊΠΎΡΡΡΠΈΠ½Ρ (coroutines). Π‘ Π΅Π΅ ΠΏΠΎΠΌΠΎΡΡΡ ΠΌΠΎΠΆΠ½ΠΎ Π»Π΅Π³ΠΊΠΎ ΠΏΠΈΡΠ°ΡΡ Π°ΡΠΈΠ½Ρ ΡΠΎΠ½Π½ΡΠΉ ΠΊΠΎΠ΄ Π² ΡΠΈΠ½Ρ ΡΠΎΠ½Π½ΠΎΠΌ Π²ΠΈΠ΄Π΅. ΠΠΎΠΌΠΈΠΌΠΎ ΠΎΡΠ½ΠΎΠ²Π½ΠΎΠΉ Π±ΠΈΠ±Π»ΠΈΠΎΡΠ΅ΠΊΠΈ (kotlinx-coroutines-core) Π΄Π»Ρ ΠΏΠΎΠ΄Π΄Π΅ΡΠΆΠΊΠΈ ΠΏΡΠ΅ΡΡΠ²Π°Π½ΠΈΠΉ, Π΅ΡΡΡ Π΅ΡΠ΅ ΠΈ Π±ΠΎΠ»ΡΡΠΎΠΉ Π½Π°Π±ΠΎΡ Π±ΠΈΠ±Π»ΠΈΠΎΡΠ΅ΠΊ Ρ ΡΠ°Π·Π»ΠΈΡΠ½ΡΠΌΠΈ ΡΠ°ΡΡΠΈΡΠ΅Π½ΠΈΡΠΌΠΈ:
kotlinx-coroutines-jdk8 β Π΄ΠΎΠΏΠΎΠ»Π½ΠΈΡΠ΅Π»ΡΠ½Π°Ρ Π±ΠΈΠ±Π»ΠΈΠΎΡΠ΅ΠΊΠ° Π΄Π»Ρ JDK8
kotlinx-coroutines-nio β ΡΠ°ΡΡΠΈΡΠ΅Π½ΠΈΡ Π΄Π»Ρ Π°ΡΠΈΠ½Ρ
ΡΠΎΠ½Π½ΠΎΠ³ΠΎ IO ΠΈΠ· JDK7+.
kotlinx-coroutines-reactive β ΡΡΠΈΠ»ΠΈΡΡ Π΄Π»Ρ ΡΠ΅Π°ΠΊΡΠΈΠ²Π½ΡΡ
ΡΡΡΠΈΠΌΠΎΠ²
kotlinx-coroutines-reactor β ΡΡΠΈΠ»ΠΈΡΡ Π΄Π»Ρ Reactor
kotlinx-coroutines-rx1 β ΡΡΠΈΠ»ΠΈΡΡ Π΄Π»Ρ RxJava 1.x
kotlinx-coroutines-rx2 β ΡΡΠΈΠ»ΠΈΡΡ Π΄Π»Ρ RxJava 2.x
kotlinx-coroutines-android β UI ΠΊΠΎΠ½ΡΠ΅ΠΊΡΡ Π΄Π»Ρ Android.
kotlinx-coroutines-javafx β JavaFx ΠΊΠΎΠ½ΡΠ΅ΠΊΡΡ Π΄Π»Ρ JavaFX UI ΠΏΡΠΈΠ»ΠΎΠΆΠ΅Π½ΠΈΠΉ.
kotlinx-coroutines-swing β Swing ΠΊΠΎΠ½ΡΠ΅ΠΊΡΡ Π΄Π»Ρ Swing UI ΠΏΡΠΈΠ»ΠΎΠΆΠ΅Π½ΠΈΠΉ.
ΠΡΠΈΠΌΠ΅ΡΠ°Π½ΠΈΠ΅: Π€ΡΠ½ΠΊΡΠΈΠΎΠ½Π°Π»ΡΠ½ΠΎΡΡΡ ΠΏΠΎΠΊΠ° Π½Π°Ρ ΠΎΠ΄ΠΈΡΡΡ Π² ΡΠΊΡΠΏΠ΅ΡΠΈΠΌΠ΅Π½ΡΠ°Π»ΡΠ½ΠΎΠΉ ΡΡΠ°Π΄ΠΈΠΈ, ΠΏΠΎΡΡΠΎΠΌΡ Π²ΡΠ΅ ΡΠΊΠ°Π·Π°Π½Π½ΠΎΠ΅ Π½ΠΈΠΆΠ΅ Π΅ΡΠ΅ ΠΌΠΎΠΆΠ΅Ρ ΠΈΠ·ΠΌΠ΅Π½ΠΈΡΡΡΡ.
ΠΠ»Ρ ΡΠΎΠ³ΠΎ, ΡΡΠΎΠ±Ρ ΠΎΠ±ΠΎΠ·Π½Π°ΡΠΈΡΡ, ΡΡΠΎ ΡΡΠ½ΠΊΡΠΈΡ ΠΌΠΎΠΆΠ΅Ρ Π±ΡΡΡ ΠΏΡΠ΅ΡΠ²Π°Π½Π° ΠΈ ΠΈΡΠΏΠΎΠ»ΡΠ·ΠΎΠ²Π°Π½Π° Π² ΠΊΠΎΠ½ΡΠ΅ΠΊΡΡΠ΅ ΠΏΡΠ΅ΡΡΠ²Π°Π½ΠΈΡ, ΠΈΡΠΏΠΎΠ»ΡΠ·ΡΠ΅ΡΡΡ ΠΌΠΎΠ΄ΠΈΡΠΈΠΊΠ°ΡΠΎΡ suspend
ΠΠ΅ΠΊΠΎΠΌΠΏΠΈΠ»ΠΈΡΠΎΠ²Π°Π½Π½ΡΠΉ ΠΊΠΎΠ΄ Π²ΡΠ³Π»ΡΠ΄ΠΈΡ ΡΠ»Π΅Π΄ΡΡΡΠΈΠΌ ΠΎΠ±ΡΠ°Π·ΠΎΠΌ:
ΠΠΎΠ»ΡΡΠ°Π΅ΡΡΡ ΠΏΡΠ°ΠΊΡΠΈΡΠ΅ΡΠΊΠΈ ΠΈΡΡ ΠΎΠ΄Π½Π°Ρ ΡΡΠ½ΠΊΡΠΈΡ, Π·Π° ΠΈΡΠΊΠ»ΡΡΠ΅Π½ΠΈΠ΅ΠΌ ΡΠΎΠ³ΠΎ, ΡΡΠΎ Π΅ΡΠ΅ ΠΏΠ΅ΡΠ΅Π΄Π°Π΅ΡΡΡ ΠΎΠ΄ΠΈΠ½ Π΄ΠΎΠΏΠΎΠ»Π½ΠΈΡΠ΅Π»ΡΠ½ΡΠΉ ΠΏΠ°ΡΠ°ΠΌΠ΅ΡΡ, ΡΠ΅Π°Π»ΠΈΠ·ΡΡΡΠΈΠΉ ΠΈΠ½ΡΠ΅ΡΡΠ΅ΠΉΡ Continuation.
Π Π½Π΅ΠΌ Ρ ΡΠ°Π½ΠΈΡΡΡ ΠΊΠΎΠ½ΡΠ΅ΠΊΡΡ Π²ΡΠΏΠΎΠ»Π½Π΅Π½ΠΈΡ, ΠΎΠΏΡΠ΅Π΄Π΅Π»Π΅Π½Π° ΡΡΠ½ΠΊΡΠΈΡ Π²ΠΎΠ·Π²ΡΠ°ΡΠ΅Π½ΠΈΡ ΡΠ΅Π·ΡΠ»ΡΡΠ°ΡΠ° ΠΈ ΡΡΠ½ΠΊΡΠΈΡ Π²ΠΎΠ·Π²ΡΠ°ΡΠ΅Π½ΠΈΡ ΠΈΡΠΊΠ»ΡΡΠ΅Π½ΠΈΡ, Π² ΡΠ»ΡΡΠ°Π΅ ΠΎΡΠΈΠ±ΠΊΠΈ.
ΠΠΎΡΡΡΠΈΠ½Ρ ΠΊΠΎΠΌΠΏΠΈΠ»ΠΈΡΡΡΡΡΡ Π² ΠΊΠΎΠ½Π΅ΡΠ½ΡΠΉ Π°Π²ΡΠΎΠΌΠ°Ρ (state machine). Π Π°ΡΡΠΌΠΎΡΡΠΈΠΌ Π½Π° ΠΏΡΠΈΠΌΠ΅ΡΠ΅:
Π€ΡΠ½ΠΊΡΠΈΠΈ foo ΠΈ bar Π²ΠΎΠ·Π²ΡΠ°ΡΠ°ΡΡ CompletableFuture, Π½Π° ΠΊΠΎΡΠΎΡΡΡ Π²ΡΠ·ΡΠ²Π°Π΅ΡΡΡ suspend ΡΡΠ½ΠΊΡΠΈΡ await. ΠΠ΅ΠΊΠΎΠΌΠΏΠΈΠ»ΠΈΡΠΎΠ²Π°ΡΡ Π² Java ΡΠ°ΠΊΠΎΠΉ ΠΊΠΎΠ΄ Π½Π΅ ΠΏΠΎΠ»ΡΡΠΈΡΡΡ (ΠΏΠΎ Π±ΠΎΠ»ΡΡΠ΅ΠΉ ΡΠ°ΡΡΠΈ ΠΈΠ·-Π·Π° goto), ΠΏΠΎΡΡΠΎΠΌΡ ΡΠ°ΡΡΠΌΠΎΡΡΠΈΠΌ Π΅Π³ΠΎ Π² ΠΏΡΠ΅Π²Π΄ΠΎΠΊΠΎΠ΄Π΅:
Π‘Π°ΠΌΠΈ ΠΊΠΎΡΡΡΠΈΠ½Ρ ΠΌΠΎΠ³ΡΡ Π²ΡΠΏΠΎΠ»Π½ΡΡΡΡΡ Π² ΡΠ°Π·Π»ΠΈΡΠ½ΡΡ ΠΏΠΎΡΠΎΠΊΠ°Ρ , Π΅ΡΡΡ ΡΠ΄ΠΎΠ±Π½ΡΠΉ ΠΌΠ΅Ρ Π°Π½ΠΈΠ·ΠΌ Π΄Π»Ρ ΡΠΏΡΠ°Π²Π»Π΅Π½ΠΈΡ ΡΡΠΈΠΌ ΠΏΡΠΈ ΠΏΠΎΠΌΠΎΡΠΈ ΡΠΊΠ°Π·Π°Π½ΠΈΡ ΠΏΡΠ»Π° Π² ΠΊΠΎΠ½ΡΠ΅ΠΊΡΡΠ΅ Π·Π°ΠΏΡΡΠΊΠ° ΠΊΠΎΡΡΡΠΈΠ½Ρ. ΠΠΎΠΆΠ½ΠΎ ΠΏΠΎΡΠΌΠΎΡΡΠ΅ΡΡ ΠΏΠΎΠ΄ΡΠΎΠ±Π½ΡΠΉ Π³Π°ΠΉΠ΄ Ρ Π±ΠΎΠ»ΡΡΠΈΠΌ ΠΊΠΎΠ»ΠΈΡΠ΅ΡΡΠ²ΠΎΠΌ ΠΏΡΠΈΠΌΠ΅ΡΠΎΠ² ΠΈ ΠΎΠΏΠΈΡΠ°Π½ΠΈΠ΅ΠΌ ΠΈΡ ΠΈΡΠΏΠΎΠ»ΡΠ·ΠΎΠ²Π°Π½ΠΈΡ.
ΠΡΠ΅ ΠΈΡΡ ΠΎΠ΄Π½ΡΠ΅ ΠΊΠΎΠ΄Ρ Π½Π° Kotlin Π΄ΠΎΡΡΡΠΏΠ½Ρ Π² github. ΠΠΎΠΆΠ½ΠΎ ΠΎΡΠΊΡΡΡΡ ΠΈΡ Ρ ΡΠ΅Π±Ρ ΠΈ ΠΏΠΎΡΠΊΡΠΏΠ΅ΡΠΈΠΌΠ΅Π½ΡΠΈΡΠΎΠ²Π°ΡΡ Ρ ΠΊΠΎΠ΄ΠΎΠΌ, ΠΏΠ°ΡΠ°Π»Π»Π΅Π»ΡΠ½ΠΎ ΠΏΡΠΎΡΠΌΠ°ΡΡΠΈΠ²Π°Ρ, Π² ΠΊΠ°ΠΊΠΎΠΉ ΠΈΡΠΎΠ³ΠΎΠ²ΡΠΉ Π±Π°ΠΉΡΠΊΠΎΠ΄ ΠΊΠΎΠΌΠΏΠΈΠ»ΠΈΡΡΡΡΡΡ ΠΈΡΡ ΠΎΠ΄Π½ΠΈΠΊΠΈ.
ΠΡΠ²ΠΎΠ΄Ρ
ΠΡΠΎΠΈΠ·Π²ΠΎΠ΄ΠΈΡΠ΅Π»ΡΠ½ΠΎΡΡΡ ΠΏΡΠΈΠ»ΠΎΠΆΠ΅Π½ΠΈΠΉ Π½Π° Kotlin Π±ΡΠ΄Π΅Ρ Π½Π΅ ΡΠΈΠ»ΡΠ½ΠΎ Ρ ΡΠΆΠ΅, ΡΠ΅ΠΌ Π½Π° Java, Π° Ρ ΠΈΡΠΏΠΎΠ»ΡΠ·ΠΎΠ²Π°Π½ΠΈΠ΅ΠΌ ΠΌΠΎΠ΄ΠΈΡΠΈΠΊΠ°ΡΠΎΡΠ° inline ΠΌΠΎΠΆΠ΅Ρ Π΄Π°ΠΆΠ΅ ΠΎΠΊΠ°Π·Π°ΡΡΡΡ Π»ΡΡΡΠ΅. ΠΠΎΠΌΠΏΠΈΠ»ΡΡΠΎΡ Π²ΠΎ Π²ΡΠ΅Ρ ΠΌΠ΅ΡΡΠ°Ρ ΡΡΠ°ΡΠ°Π΅ΡΡΡ Π³Π΅Π½Π΅ΡΠΈΡΠΎΠ²Π°ΡΡ Π½Π°ΠΈΠ±ΠΎΠ»Π΅Π΅ ΠΎΠΏΡΠΈΠΌΠΈΠ·ΠΈΡΠΎΠ²Π°Π½Π½ΡΠΉ Π±Π°ΠΉΡΠΊΠΎΠ΄. ΠΠΎΡΡΠΎΠΌΡ Π½Π΅ ΡΡΠΎΠΈΡ Π±ΠΎΡΡΡΡΡ, ΡΡΠΎ ΠΏΡΠΈ ΠΏΠ΅ΡΠ΅Ρ ΠΎΠ΄Π΅ Π½Π° Kotlin Π²Ρ ΠΏΠΎΠ»ΡΡΠΈΡΠ΅ Π±ΠΎΠ»ΡΡΠΎΠ΅ ΡΡ ΡΠ΄ΡΠ΅Π½ΠΈΠ΅ ΠΏΡΠΎΠΈΠ·Π²ΠΎΠ΄ΠΈΡΠ΅Π»ΡΠ½ΠΎΡΡΠΈ. Π Π² ΠΎΡΠΎΠ±ΠΎ ΠΊΡΠΈΡΠΈΡΠ½ΡΡ ΠΌΠ΅ΡΡΠ°Ρ , Π·Π½Π°Ρ Π²ΠΎ ΡΡΠΎ ΠΊΠΎΠΌΠΏΠΈΠ»ΠΈΡΡΠ΅ΡΡΡ Kotlin, Π²ΡΠ΅Π³Π΄Π° ΠΌΠΎΠΆΠ½ΠΎ ΠΏΠ΅ΡΠ΅ΠΏΠΈΡΠ°ΡΡ ΠΊΠΎΠ΄ Π½Π° Π±ΠΎΠ»Π΅Π΅ ΠΏΠΎΠ΄Ρ ΠΎΠ΄ΡΡΠΈΠΉ Π²Π°ΡΠΈΠ°Π½Ρ. ΠΠ΅Π±ΠΎΠ»ΡΡΠ°Ρ ΠΏΠ»Π°ΡΠ° Π·Π° ΡΠΎ, ΡΡΠΎ ΡΠ·ΡΠΊ ΠΏΠΎΠ·Π²ΠΎΠ»ΡΠ΅Ρ ΡΠ΅Π°Π»ΠΈΠ·ΠΎΠ²ΡΠ²Π°ΡΡ ΡΠ»ΠΎΠΆΠ½ΡΠ΅ ΠΊΠΎΠ½ΡΡΡΡΠΊΡΠΈΠΈ Π² Π΄ΠΎΡΡΠ°ΡΠΎΡΠ½ΠΎ Π»Π°ΠΊΠΎΠ½ΠΈΡΠ½ΠΎΠΌ ΠΈ ΠΏΡΠΎΡΡΠΎΠΌ Π²ΠΈΠ΄Π΅.
Π‘ΠΏΠ°ΡΠΈΠ±ΠΎ Π·Π° Π²Π½ΠΈΠΌΠ°Π½ΠΈΠ΅! ΠΠ°Π΄Π΅ΡΡΡ Π²Π°ΠΌ ΠΏΠΎΠ½ΡΠ°Π²ΠΈΠ»Π°ΡΡ ΡΡΠ°ΡΡΡ. ΠΡΠΎΡΡ Π²ΡΠ΅Ρ ΡΠ΅Ρ , ΠΊΡΠΎ Π·Π°ΠΌΠ΅ΡΠΈΠ» ΠΊΠ°ΠΊΠΈΠ΅-Π»ΠΈΠ±ΠΎ ΠΎΡΠΈΠ±ΠΊΠΈ ΠΈΠ»ΠΈ Π½Π΅ΡΠΎΡΠ½ΠΎΡΡΠΈ Π½Π°ΠΏΠΈΡΠ°ΡΡ ΠΌΠ½Π΅ ΠΎΠ± ΡΡΠΎΠΌ Π² Π»ΠΈΡΠ½ΠΎΠΌ ΡΠΎΠΎΠ±ΡΠ΅Π½ΠΈΠΈ.








