Π’ΡƒΡ‚ΠΎΡ€ΠΈΠ°Π»Ρ‹
04 октября 2021
Π’ΡƒΡ‚ΠΎΡ€ΠΈΠ°Π»Ρ‹
04 октября 2021
ОбъявлСния дСструктуризации Π² Kotlin

ОбъявлСния дСструктуризации - это ΠΎΡΠΎΠ±Π΅Π½Π½ΠΎΡΡ‚ΡŒ Kotlin, которая Π΄Π°Π΅Ρ‚ Π²Π°ΠΌ инструмСнт для Π»Π΅Π³ΠΊΠΎΠ³ΠΎ извлСчСния Π΄Π°Π½Π½Ρ‹Ρ… ΠΈΠ· ΠΊΠΎΠ»Π»Π΅ΠΊΡ†ΠΈΠΈ простым ΠΈ доступным способом. Β 

Π’ процСссС программирования Π½Π°Β Kotlin, Π²Ρ‹ Ρ€Π°Π±ΠΎΡ‚Π°Π΅Ρ‚Π΅ с большим количСством Π΄Π°Π½Π½Ρ‹Ρ…. Иногда Π²Ρ‹ собираСтС Π΄Π°Π½Π½Ρ‹Π΅ Π² ΠΊΠΎΠ»Π»Π΅ΠΊΡ†ΠΈΡŽ, Ρ‚Π°ΠΊΡƒΡŽ ΠΊΠ°ΠΊ массив, ΠΏΠ°Ρ€Ρƒ, класс Π΄Π°Π½Π½Ρ‹Ρ… ΠΈΠ»ΠΈ класс. И, ΠΊΠΎΠ½Π΅Ρ‡Π½ΠΎ, Π²Π°ΠΌ Π½ΡƒΠΆΠ΅Π½ способ, ΠΊΠ°ΠΊ ΠΈΠ·Π²Π»Π΅Ρ‡ΡŒ Π΄Π°Π½Π½Ρ‹Π΅ ΠΈΠ· этих ΠΊΠΎΠ»Π»Π΅ΠΊΡ†ΠΈΠΉ. Π­Ρ‚ΠΎ ΠΈ Π΅ΡΡ‚ΡŒ ОбъявлСниС ДСструктуризации, ΠΎ ΠΊΠΎΡ‚ΠΎΡ€ΠΎΠΉ Π²Ρ‹ ΡƒΠ·Π½Π°Π΅Ρ‚Π΅ Π² этом Ρ‚ΡƒΡ‚ΠΎΡ€ΠΈΠ°Π»Π΅.

Π•ΡΡ‚ΡŒ ΠΌΠ½ΠΎΠ³ΠΎ способов ΠΈΠ·Π²Π»Π΅Ρ‡ΡŒ Π΄Π°Π½Π½Ρ‹Π΅ ΠΈΠ· ΠΊΠΎΠ»Π»Π΅ΠΊΡ†ΠΈΠΈ, связанных с использованиСм индСкса. Π‘ ОбъявлСниями ДСструктуризации Kotlin Π΄Π°Π΅Ρ‚ Π²Π°ΠΌ инструмСнт для Π»Π΅Π³ΠΊΠΎΠ³ΠΎ извлСчСния Π΄Π°Π½Π½Ρ‹Ρ… ΠΈΠ· ΠΊΠΎΠ»Π»Π΅ΠΊΡ†ΠΈΠΈ, нСзависимо ΠΎΡ‚ Π΅Π΅ Ρ€Π°Π·ΠΌΠ΅Ρ€Π°.

Π’ этом Ρ‚ΡƒΡ‚ΠΎΡ€ΠΈΠ°Π»Π΅ Π²Ρ‹ создадитС Destructuring Cryptocurrencies - простоС консольноС ΠΏΡ€ΠΈΠ»ΠΎΠΆΠ΅Π½ΠΈΠ΅, Π΄Π΅Π»Π°ΡŽΡ‰Π΅Π΅ Π°ΠΊΡ†Π΅Π½Ρ‚ Π½Π° ΠΏΡ€ΠΈΠΌΠ΅Π½Π΅Π½ΠΈΠ΅ объявлСний дСструктуризации. Пока Π²Ρ‹ Π±ΡƒΠ΄Π΅Ρ‚Π΅ ΠΈΠ·ΡƒΡ‡Π°Ρ‚ΡŒ названия Ρ€Π°Π·Π»ΠΈΡ‡Π½Ρ‹Ρ… Ρ‚ΠΈΠΏΠΎΠ² ΠΊΡ€ΠΈΠΏΡ‚ΠΎΠ²Π°Π»ΡŽΡ‚, Π²Ρ‹ ΡƒΠ·Π½Π°Π΅Ρ‚Π΅ ΠΎΠ±:

  • ОбъявлСнии дСструктуризации ΠΏΠ°Ρ€Ρ‹, массива ΠΈ ΠΊΠ°Ρ€Ρ‚Ρ‹.
  • Π’Π°Ρ€ΠΈΠ°Π½Ρ‚Π΅ использования объявлСний дСструктуризации Π² Лямбда.
  • ΠŸΡ€ΠΎΠ±Π»Π΅ΠΌΠ΅ с объявлСниями дСструктуризации класса Π΄Π°Π½Π½Ρ‹Ρ….
  • Как ΡΠΎΠ·Π΄Π°Ρ‚ΡŒ объявлСния дСструктуризации ΠΏΠΎΠ΄Π΄Π΅Ρ€ΠΆΠΈΠ²Π°Π΅ΠΌΡ‹Π΅ классом.

НачнСм

Π—Π°Π³Ρ€ΡƒΠ·ΠΈΡ‚Π΅ стартовый ΠΏΡ€ΠΎΠ΅ΠΊΡ‚ Π½Π°ΠΆΠ°Π² Π½Π° β€œΠ‘ΠΊΠ°Ρ‡Π°Ρ‚ΡŒ ΠœΠ°Ρ‚Π΅Ρ€ΠΈΠ°Π»Ρ‹β€. ΠžΡ‚ΠΊΡ€ΠΎΠΉΡ‚Π΅ Π΅Π³ΠΎ Π² IntelliJ IDEA.Β 

ΠžΡ‚ΠΊΡ€ΠΎΠΉΡ‚Π΅ DestructuringCryptocurrencies.kt. Π’ этом Ρ„Π°ΠΉΠ»Π΅ Π²Ρ‹ ΡƒΠ²ΠΈΠ΄ΠΈΡ‚Π΅ Π½Π΅ΠΊΠΎΡ‚ΠΎΡ€Ρ‹Π΅ Π΄Π°Π½Π½Ρ‹Π΅, Π²ΠΊΠ»ΡŽΡ‡Π°Ρ ΠΏΠ°Ρ€Ρƒ, массив ΠΈ класс Π΄Π°Π½Π½Ρ‹Ρ…. Π”Π°Π»Π΅Π΅ с Π½ΠΈΠΌΠΈ Π²Ρ‹ Π±ΡƒΠ΄Π΅Ρ‚Π΅ ΠΈΡΠΏΠΎΠ»ΡŒΠ·ΠΎΠ²Π°Ρ‚ΡŒ объявлСния дСструктуризации.Β 

ОбъявлСния дСструктуризации

Π’ΠΎ-ΠΏΠ΅Ρ€Π²Ρ‹Ρ…, Π²Π°ΠΌ ΠΌΠΎΠΆΠ΅Ρ‚ Π±Ρ‹Ρ‚ΡŒ интСрСсно, Ρ‡Ρ‚ΠΎ ΠΎΠ·Π½Π°Ρ‡Π°Π΅Ρ‚ Ρ‚Π΅Ρ€ΠΌΠΈΠ½ ОбъявлСниС ДСструктуризации. ΠŸΡ€ΠΎΡΡ‚Ρ‹ΠΌΠΈ словами, это процСсс создания Π½Π΅ΡΠΊΠΎΠ»ΡŒΠΊΠΈΡ… ΠΏΠ΅Ρ€Π΅ΠΌΠ΅Π½Π½Ρ‹Ρ… Π² ΠΎΠ΄Π½ΠΎΠΉ строкС ΠΊΠΎΠ΄Π°. Π­Ρ‚ΠΎ синтаксичСская ΠΎΡΠΎΠ±Π΅Π½Π½ΠΎΡΡ‚ΡŒ Kotlin, которая Π²ΠΎΠ·ΠΌΠΎΠΆΠ½ΠΎ Π±ΡƒΠ΄Π΅Ρ‚ нСпонятна Π²Π½Π°Ρ‡Π°Π»Π΅, Π½ΠΎ ΠΌΠΎΠΆΠ΅Ρ‚ ΠΏΡ€ΠΈΠ³ΠΎΠ΄ΠΈΡ‚ΡŒΡΡ ΠΈ ΠΏΠΎΠΌΠΎΡ‡ΡŒ ΡΠ΄Π΅Π»Π°Ρ‚ΡŒ ваш ΠΊΠΎΠ΄ Ρ‡ΠΈΡ‰Π΅. Β 

ΠžΠ±Ρ‹Ρ‡Π½ΠΎ ΠΎΠ½Π° ΠΈΡΠΏΠΎΠ»ΡŒΠ·ΡƒΠ΅Ρ‚ΡΡ Π² коллСкциях, Π½ΠΎ Ρ‚Π°ΠΊ ΠΆΠ΅ ΠΈ Π² Π΄Ρ€ΡƒΠ³ΠΈΡ… Ρ‚ΠΈΠΏΠ°Ρ… Π΄Π°Π½Π½Ρ‹Ρ…. Π’ этом Ρ‚ΡƒΡ‚ΠΎΡ€ΠΈΠ°Π»Π΅ Π²Ρ‹ ΡƒΠ·Π½Π°Π΅Ρ‚Π΅, ΠΊΠ°ΠΊ ΠΈΡΠΏΠΎΠ»ΡŒΠ·ΠΎΠ²Π°Ρ‚ΡŒ ΠΈΡ… Π²:Β 

  • ΠœΠ°ΡΡΠΈΠ²Π°Ρ…
  • ΠŸΠ°Ρ€Π°Ρ…
  • ΠšΠ°Ρ€Ρ‚Π°Ρ…
  • Лямбдах
  • ΠšΠ»Π°ΡΡΠ°Ρ… Π΄Π°Π½Π½Ρ‹Ρ…

Π’Ρ‹ ΠΌΠΎΠΆΠ΅Ρ‚Π΅ Π½Π°ΠΉΡ‚ΠΈ Π΄Ρ€ΡƒΠ³ΠΈΠ΅ Π²Π°Ρ€ΠΈΠ°Π½Ρ‚Ρ‹ использования, Π½ΠΎ этот Ρ‚ΡƒΡ‚ΠΎΡ€ΠΈΠ°Π» даст Π²Π°ΠΌ инструмСнты, ΠΊΠΎΡ‚ΠΎΡ€Ρ‹Π΅ ΠΌΠΎΠΆΠ½ΠΎ ΠΏΡ€ΠΈΠΌΠ΅Π½ΠΈΡ‚ΡŒ Π³Π΄Π΅ ΡƒΠ³ΠΎΠ΄Π½ΠΎ.

ОбъявлСния ДСструктуризации ΠΏΠ°Ρ€Ρ‹, массива ΠΈ ΠΊΠ°Ρ€Ρ‚Ρ‹

ΠŸΠ΅Ρ€Π²ΠΎΠ΅ ΠΈ Π½Π°ΠΈΠ±ΠΎΠ»Π΅Π΅ распространСнноС использованиС объявлСний дСструктуризации - это структуры Π΄Π°Π½Π½Ρ‹Ρ…. Π—Π΄Π΅ΡΡŒ Π²Ρ‹ Π±ΡƒΠ΄Π΅Ρ‚Π΅ ΠΈΡΠΏΠΎΠ»ΡŒΠ·ΠΎΠ²Π°Ρ‚ΡŒ ΠΈΡ… с ΠΏΠ°Ρ€ΠΎΠΉ, массивом ΠΈ ΠΊΠ°Ρ€Ρ‚ΠΎΠΉ. Π­Ρ‚ΠΎ ΠΎΠ±Ρ‰ΠΈΠ΅ Ρ‚ΠΈΠΏΡ‹ Π΄Π°Π½Π½Ρ‹Ρ…, ΠΈΠ· ΠΊΠΎΡ‚ΠΎΡ€Ρ‹Ρ… Π²Ρ‹ ΠΌΠΎΠΆΠ΅Ρ‚Π΅ ΠΈΠ·Π²Π»Π΅Ρ‡ΡŒ элСмСнты.

ОбъявлСния ДСструктуризации ΠΏΠ°Ρ€Ρ‹

Π‘Π½Π°Ρ‡Π°Π»Π° Π½Π°Ρ‡Π½ΠΈΡ‚Π΅ с ΠΏΠ°Ρ€Ρ‹, которая, ΠΊΠ°ΠΊ Π²Ρ‹, Π²ΠΎΠ·ΠΌΠΎΠΆΠ½ΠΎ, Π·Π½Π°Π΅Ρ‚Π΅, прСдставляСт собой структуру Π΄Π°Π½Π½Ρ‹Ρ…, ΡΠΎΠ΄Π΅Ρ€ΠΆΠ°Ρ‰ΡƒΡŽ Π΄Π²Π° элСмСнта.

Π§Ρ‚ΠΎΠ±Ρ‹ Π½Π°Ρ‡Π°Ρ‚ΡŒ Π‘ΠΊΠΎΠΌΠΏΠΈΠ»ΠΈΡ€ΡƒΠΉΡ‚Π΅ ΠΈ ЗапуститС ΠΎΠ±Ρ€Π°Π·Π΅Ρ† ΠΏΡ€ΠΎΠ΅ΠΊΡ‚Π°. ΠŸΠΎΡΠΊΠΎΠ»ΡŒΠΊΡƒ это консольноС ΠΏΡ€ΠΈΠ»ΠΎΠΆΠ΅Π½ΠΈΠ΅, Π²Ρ‹ ΠΌΠΎΠΆΠ΅Ρ‚Π΅ ΠΏΡ€ΠΎΠ²Π΅Ρ€ΠΈΡ‚ΡŒ Π²Ρ‹Π²ΠΎΠ΄ прилоТСния Π² ΠΎΠΊΠ½Π΅ ΠΏΠ°Π½Π΅Π»ΠΈ запуска. Π’Ρ‹ ΠΏΠΎΠ»ΡƒΡ‡ΠΈΡ‚Π΅ ΠΈΠ½Ρ„ΠΎΡ€ΠΌΠ°Ρ†ΠΈΡŽ:

Как ΠΌΠΎΠΆΠ½ΠΎ Π·Π°ΠΌΠ΅Ρ‚ΠΈΡ‚ΡŒ ΠΈΠ· Π΄Π°Π½Π½Ρ‹Ρ… Π²Ρ‹ΡˆΠ΅, Π²Ρ‹ Π±ΡƒΠ΄Π΅Ρ‚Π΅ ΠΈΡΠΏΠΎΠ»ΡŒΠ·ΠΎΠ²Π°Ρ‚ΡŒ объявлСния дСструктуризации со ΠΌΠ½ΠΎΠ³ΠΈΠΌΠΈ Ρ‚ΠΈΠΏΠ°ΠΌΠΈ Π΄Π°Π½Π½Ρ‹Ρ…, Ρ‚Π°ΠΊΠΈΡ… ΠΊΠ°ΠΊ ΠΏΠ°Ρ€Ρ‹, массивы ΠΈ классы Π΄Π°Π½Π½Ρ‹Ρ….

Π‘Π½Π°Ρ‡Π°Π»Π° Π²Ρ‹ Π²ΠΎΡΠΏΠΎΠ»ΡŒΠ·ΡƒΠ΅Ρ‚Π΅ΡΡŒ объявлСниСм дСструктуризации для ΠΏΠ°Ρ€Ρ‹. ΠŸΡ€ΠΈ ΠΈΠ·Π²Π»Π΅Ρ‡Π΅Π½ΠΈΠΈ ΠΈΠ½Ρ„ΠΎΡ€ΠΌΠ°Ρ†ΠΈΠΈ ΠΈΠ· ΠΏΠ°Ρ€Ρ‹ Π²Ρ‹ ΠΌΠΎΠΆΠ΅Ρ‚Π΅ ΠΈΠ·Π²Π»Π΅ΠΊΠ°Ρ‚ΡŒ элСмСнты ΠΏΠΎ ΠΎΠ΄Π½ΠΎΠΌΡƒ, ΠΈΡΠΏΠΎΠ»ΡŒΠ·ΡƒΡ свойства first ΠΈ second, Ρ‡Ρ‚ΠΎ являСтся Π½Π°ΠΈΠ±ΠΎΠ»Π΅Π΅ распространСнным способом. Но с объявлСниями дСструктуризации Π²Ρ‹ ΠΌΠΎΠΆΠ΅Ρ‚Π΅ ΠΈΠ·Π²Π»Π΅Ρ‡ΡŒ ΠΎΠ±Π° элСмСнта ΠΈΠ· ΠΏΠ°Ρ€Ρ‹ Π·Π° ΠΎΠ΄ΠΈΠ½ Ρ€Π°Π·.

Π—Π°ΠΌΠ΅Π½ΠΈΡ‚Π΅ TODO1 Π½Π°:

val (stringFromPair1, stringFromPair2) = pair
println("$stringFromPair1, $stringFromPair2")

Π‘ΠΊΠΎΠΌΠΏΠΈΠ»ΠΈΡ€ΡƒΠΉΡ‚Π΅ ΠΈ запуститС. Π’Ρ‹ ΠΌΠΎΠΆΠ΅Ρ‚Π΅ ΡƒΠ²ΠΈΠ΄Π΅Ρ‚ΡŒ Π·Π½Π°Ρ‡Π΅Π½ΠΈΠ΅ stringFromPair1 ΠΈ stringFromPair2.

ОбъявлСния дСструктуризации Π°Π½Π°Π»ΠΎΠ³ΠΈΡ‡Π½ΠΎ объявлСнию ΠΎΠ±Ρ‹Ρ‡Π½ΠΎΠΉ ΠΏΠ΅Ρ€Π΅ΠΌΠ΅Π½Π½ΠΎΠΉ. Π’Ρ‹ Π²Ρ‹Π±ΠΈΡ€Π°Π΅Ρ‚Π΅, Ρ…ΠΎΡ‚ΠΈΡ‚Π΅ Π»ΠΈ Π²Ρ‹ ΠΈΡΠΏΠΎΠ»ΡŒΠ·ΠΎΠ²Π°Ρ‚ΡŒ val ΠΈΠ»ΠΈ var. Π”Π°Π»Π΅Π΅ Π²Ρ‹ Π·Π°ΠΊΠ»ΡŽΡ‡Π°Π΅Ρ‚Π΅ Π΄Π²Π΅ ΠΏΠ΅Ρ€Π΅ΠΌΠ΅Π½Π½Ρ‹Π΅, Ρ€Π°Π·Π΄Π΅Π»Π΅Π½Π½Ρ‹Π΅ запятыми, Π² ΠΊΡ€ΡƒΠ³Π»Ρ‹Π΅ скобки.Β 

Код выглядит Π½Π°ΠΌΠ½ΠΎΠ³ΠΎ ΠΏΡ€ΠΎΡ‰Π΅, Ρ‡Π΅ΠΌ ΠΏΡ€Π΅Π΄Ρ‹Π΄ΡƒΡ‰ΠΈΠΉ ΠΏΡ€ΠΈΠΌΠ΅Ρ€ извлСчСния.Β 

Π’Ρ‹ Π΄ΠΎΠ»ΠΆΠ½Ρ‹ ΠΈΡΠΏΠΎΠ»ΡŒΠ·ΠΎΠ²Π°Ρ‚ΡŒ val ΠΈΠ»ΠΈ var для ΠΎΠ±Π΅ΠΈΡ… ΠΏΠ΅Ρ€Π΅ΠΌΠ΅Π½Π½Ρ‹Ρ…. Π’Ρ‹ Π½Π΅ ΠΌΠΎΠΆΠ΅Ρ‚Π΅ ΠΈΡΠΏΠΎΠ»ΡŒΠ·ΠΎΠ²Π°Ρ‚ΡŒ val для ΠΎΠ΄Π½ΠΎΠΉ ΠΏΠ΅Ρ€Π΅ΠΌΠ΅Π½Π½ΠΎΠΉ ΠΈ var для Π΄Ρ€ΡƒΠ³ΠΎΠΉ ΠΏΠ΅Ρ€Π΅ΠΌΠ΅Π½Π½ΠΎΠΉ. Π’ Ρ‚ΠΎΠΌ случаС, ΠΊΠΎΠ³Π΄Π° Π²Π°ΠΌ Π½ΡƒΠΆΠ½ΠΎ ΠΈΡΠΏΠΎΠ»ΡŒΠ·ΠΎΠ²Π°Ρ‚ΡŒ val для ΠΎΠ΄Π½ΠΎΠ³ΠΎ значСния ΠΈ var для Π΄Ρ€ΡƒΠ³ΠΎΠ³ΠΎ значСния, Π²Ρ‹ Π½Π΅ ΠΌΠΎΠΆΠ΅Ρ‚Π΅ ΠΈΡΠΏΠΎΠ»ΡŒΠ·ΠΎΠ²Π°Ρ‚ΡŒ объявлСния дСструктуризации.

Если Π²Ρ‹ Π½Π΅ ΠΈΡΠΏΠΎΠ»ΡŒΠ·ΡƒΠ΅Ρ‚Π΅ объявлСния дСструктуризации, Π²Π°ΠΌ Π½ΡƒΠΆΠ½ΠΎ Π±ΡƒΠ΄Π΅Ρ‚ ΠΈΠ·Π²Π»Π΅ΠΊΠ°Ρ‚ΡŒ значСния ΠΎΠ΄Π½ΠΎ Π·Π° Π΄Ρ€ΡƒΠ³ΠΈΠΌ с ΠΏΠΎΠΌΠΎΡ‰ΡŒΡŽ ΠΎΠΏΠ΅Ρ€Π°Ρ‚ΠΎΡ€Π° индСкса. ИспользованиС объявлСний дСструктуризации позволяСт ΡΡΠΊΠΎΠ½ΠΎΠΌΠΈΡ‚ΡŒ нСсколько Π»ΠΈΡˆΠ½ΠΈΡ… строк.

Однако объявлСния дСструктуризации Π½Π΅ Ρ‚ΠΎΠ»ΡŒΠΊΠΎ ΡΠΎΡ…Ρ€Π°Π½ΡΡŽΡ‚ строки, Π½ΠΎ ΠΈ Π² Π½Π΅ΠΊΠΎΡ‚ΠΎΡ€Ρ‹Ρ… случаях Π±ΠΎΠ»Π΅Π΅ СстСствСнны. НапримСр, рассмотрим ΠΏΠ°Ρ€Ρƒ ΠΊΠ°ΠΊ ΠΊΠΎΠ»Π»Π΅ΠΊΡ†ΠΈΡŽ Π΄Π°Π½Π½Ρ‹Ρ… ΠΊΠΎΠΎΡ€Π΄ΠΈΠ½Π°Ρ‚ Π² 2D-Π»Π°Π½Π΄ΡˆΠ°Ρ„Ρ‚Π΅. Π’Ρ‹ ΠΌΠΎΠΆΠ΅Ρ‚Π΅ ΠΈΠ·Π²Π»Π΅Ρ‡ΡŒ xΒ ΠΈ y ΠΏΠΎ ΠΎΠ΄Π½ΠΎΠΌΡƒ ΠΈΠ· ΠΏΠ°Ρ€Ρ‹ ΡΠ»Π΅Π΄ΡƒΡŽΡ‰ΠΈΠΌ ΠΎΠ±Ρ€Π°Π·ΠΎΠΌ:

val x = coordinates[0]
val y = coordinates[1]

Но Π±ΠΎΠ»Π΅Π΅ СстСствСнно ΠΈΡΠΏΠΎΠ»ΡŒΠ·ΠΎΠ²Π°Ρ‚ΡŒ объявлСния дСструктуризации, Ρ‡Ρ‚ΠΎΠ±Ρ‹ ΠΈΠ·Π²Π»Π΅Ρ‡ΡŒ ΠΈΡ… ΠΊΠ°ΠΊ ΠΏΠ°Ρ€Ρƒ, ΠΊΠ°ΠΊ здСсь:

val (x, y) = coordinates

Π­Ρ‚ΠΎ Π»Π΅Π³Ρ‡Π΅ ΠΏΡ€ΠΎΡ‡Π΅ΡΡ‚ΡŒ, ΠΏΠΎΡ‚ΠΎΠΌΡƒ Ρ‡Ρ‚ΠΎ Π²Π°ΠΌ Π½Π΅ Π½ΡƒΠΆΠ½ΠΎ Ρ‡ΠΈΡ‚Π°Ρ‚ΡŒ индСкс 0 ΠΈ индСкс 1, ΠΊΠΎΡ‚ΠΎΡ€Ρ‹Π΅ ΡΠ²Π»ΡΡŽΡ‚ΡΡ лишними.Β 

ОбъявлСния дСструктуризации массива

Π’Π΅ΠΏΠ΅Ρ€ΡŒ Π΄Π°Π²Π°ΠΉΡ‚Π΅ ΠΏΡ€ΠΎΠ΄ΠΎΠ»ΠΆΠΈΠΌ с Π±ΠΎΠ»Π΅Π΅ распространСнной структурой Π΄Π°Π½Π½Ρ‹Ρ…, которая содСрТит Π½Π΅ просто Π΄Π²Π° значСния, Π° мноТСство. Π’ ΡΠ»Π΅Π΄ΡƒΡŽΡ‰Π΅ΠΌ ΠΏΡ€ΠΈΠΌΠ΅Ρ€Π΅ Π²Ρ‹ Π±ΡƒΠ΄Π΅Ρ‚Π΅ ΠΈΡΠΏΠΎΠ»ΡŒΠ·ΠΎΠ²Π°Ρ‚ΡŒ объявлСния дСструктуризации для массива.

Для Π½Π°Ρ‡Π°Π»Π° ΠΎΠ±Ρ€Π°Ρ‚ΠΈΡ‚Π΅ Π²Π½ΠΈΠΌΠ°Π½ΠΈΠ΅ Π½Π° ограничСния дСструктуризации массива ΠΈ Π΄Ρ€ΡƒΠ³ΠΈΡ… способов извлСчСния элСмСнтов ΠΈΠ· Π½Π΅Π³ΠΎ. Π’ ΠΊΠΎΠ΄Π΅ Π²Ρ‹ Π²ΠΈΠ΄ΠΈΡ‚Π΅ Π΄Π²Π° ΠΏΡ€ΠΈΠΌΠ΅Ρ€Π° Ρ‚ΠΎΠ³ΠΎ, ΠΊΠ°ΠΊ ΠΏΠΎΠ»ΡƒΡ‡ΠΈΡ‚ΡŒ элСмСнт ΠΈΠ· массива; Ρ‚Π΅ΠΏΠ΅Ρ€ΡŒ ΠΏΡ€Π΅Π΄ΡΡ‚Π°Π²ΡŒΡ‚Π΅, Ρ‡Ρ‚ΠΎ Π²Π°ΠΌ Π½ΡƒΠΆΠ½ΠΎ ΠΏΠΎΠ²Ρ‚ΠΎΡ€ΠΈΡ‚ΡŒ это для ΠΊΠ°ΠΆΠ΄ΠΎΠ³ΠΎ элСмСнта. ВзглянитС Π½Π° ΠΏΡ€ΠΈΠ²Π΅Π΄Π΅Π½Π½Ρ‹ΠΉ Π½ΠΈΠΆΠ΅ ΠΊΠΎΠ΄, Ρ‡Ρ‚ΠΎΠ±Ρ‹ ΠΏΠΎΠ½ΡΡ‚ΡŒ, ΠΎ Ρ‡Π΅ΠΌ ΠΈΠ΄Π΅Ρ‚ Ρ€Π΅Ρ‡ΡŒ:

Бпособ объявлСний дСструктуризации для массива ΠΈ ΠΏΠ°Ρ€Ρ‹ ΠΎΠ΄ΠΈΠ½ ΠΈ Ρ‚ΠΎΡ‚ ΠΆΠ΅. Однако Π² массивС ΠΈΡΠΏΠΎΠ»ΡŒΠ·ΠΎΠ²Π°Ρ‚ΡŒΒ  объявлСния дСструктуризации Π²Ρ‹ ΠΌΠΎΠΆΠ΅Ρ‚Π΅ Π½Π΅ Π±ΠΎΠ»Π΅Π΅ Ρ‡Π΅ΠΌ для пяти элСмСнтов.

Если Π²Ρ‹ раскоммСнтируСтС строку Π² ΠΏΡ€ΠΈΠ²Π΅Π΄Π΅Π½Π½ΠΎΠΌ Π²Ρ‹ΡˆΠ΅ ΠΏΡ€ΠΈΠΌΠ΅Ρ€Π΅ ΠΊΠΎΠ΄Π°, Ρ‚ΠΎ Π·Π°ΠΌΠ΅Ρ‚ΠΈΡ‚Π΅ ΠΎΡˆΠΈΠ±ΠΊΡƒ Π² ΡˆΠ΅ΡΡ‚ΠΎΠΌ элСмСнтС. Π’Π΅ΠΏΠ΅Ρ€ΡŒ строка Π±ΡƒΠ΄Π΅Ρ‚ Π²Ρ‹Π³Π»ΡΠ΄Π΅Ρ‚ΡŒ ΡΠ»Π΅Π΄ΡƒΡŽΡ‰ΠΈΠΌ ΠΎΠ±Ρ€Π°Π·ΠΎΠΌ:

val (string1, string2, string3, string4, string5, string6) = stringList

Π‘ΠΊΠΎΠΌΠΏΠΈΠ»ΠΈΡ€ΡƒΠΉΡ‚Π΅ ΠΈ запуститС. Как Π²ΠΈΠ΄ΠΈΡ‚Π΅, Π²Ρ‹ ΠΏΠΎΠ»ΡƒΡ‡Π°Π΅Ρ‚Π΅ ΠΎΡˆΠΈΠ±ΠΊΡƒ.Β 

Ошибка:Β  отсутствуСт component6.

Π’Π΅ΠΏΠ΅Ρ€ΡŒ ΠΎΡ‚ΠΌΠ΅Π½ΠΈΡ‚Π΅ измСнСния. Π—Π°ΠΊΠΎΠΌΠΌΠ΅Π½Ρ‚ΠΈΡ€ΡƒΠΉΡ‚Π΅ строку снова, Ρ‡Ρ‚ΠΎΠ±Ρ‹ ΠΎΠ½Π° стала:

// val (string1, string2, string3, string4, string5, string6) = stringList

Π‘ΠΊΠΎΠΌΠΏΠΈΠ»ΠΈΡ€ΡƒΠΉΡ‚Π΅ ΠΈ запуститС снова. ΠŸΡ€ΠΈΠ»ΠΎΠΆΠ΅Π½ΠΈΠ΅ Π΄ΠΎΠ»ΠΆΠ½ΠΎ Π²Π΅Ρ€Π½ΡƒΡ‚ΡŒΡΡ Π² Π½ΠΎΡ€ΠΌΠ°Π»ΡŒΠ½ΠΎΠ΅ состояниС.Β 

ΠžΡ‚Π»ΠΈΡ‡Π½Π°Ρ Ρ€Π°Π±ΠΎΡ‚Π°! Π’Ρ‹ ΡƒΠΆΠ΅ ΡƒΠ·Π½Π°Π»ΠΈ, ΠΊΠ°ΠΊ Π²Ρ‹ΠΏΠΎΠ»Π½ΡΡ‚ΡŒ ОбъявлСния ДСструктуризации с двумя Ρ‚ΠΈΠΏΠ°ΠΌΠΈ Π΄Π°Π½Π½Ρ‹Ρ…: ΠΏΠ°Ρ€Π°ΠΌΠΈ ΠΈ массивами. ΠŸΡ€ΠΎΠ΄ΠΎΠ»ΠΆΠ°ΠΉΡ‚Π΅ ΠΈΠ·ΡƒΡ‡Π°Ρ‚ΡŒ ΠΈ ΡƒΠ·Π½Π°ΠΉΡ‚Π΅ ΠΎ Π΅Ρ‰Π΅ Π±ΠΎΠ»ΡŒΡˆΠΈΡ… возмоТностях.

Component1, Component2, …, ComponentN

Π’ ΠΏΡ€Π΅Π΄Ρ‹Π΄ΡƒΡ‰Π΅ΠΌ ΠΏΡ€ΠΈΠΌΠ΅Ρ€Π΅ ошибка Π³ΠΎΠ²ΠΎΡ€ΠΈΡ‚ Π½Π°ΠΌ ΠΎ Ρ‚ΠΎΠΌ, Ρ‡Ρ‚ΠΎ ΠΌΡ‹ ΠΌΠΎΠΆΠ΅ΠΌ ΠΈΡΠΏΠΎΠ»ΡŒΠ·ΠΎΠ²Π°Ρ‚ΡŒ ΠΏΠΎΠ΄ΠΎΠ±Π½Ρ‹Π΅ ΠΌΠ΅Ρ‚ΠΎΠ΄Ρ‹ с индСксами Π½ΠΈΠΆΠ΅ Ρ‚ΠΎΠ³ΠΎ, Π½Π° ΠΊΠΎΡ‚ΠΎΡ€Ρ‹ΠΉ ΠΎΠ½Π° ΡƒΠΊΠ°Π·Ρ‹Π²Π°Π΅Ρ‚, Π½Π°ΠΏΠΎΠ΄ΠΎΠ±ΠΈΠ΅ component5. Π’Ρ‹ΠΏΠΎΠ»Π½Π΅Π½ΠΈΠ΅ val componentString5 = stringList.component5() - это ΠΎΠ΄ΠΈΠ½ ΠΈΠ· способов ΠΈΠ·Π²Π»Π΅Ρ‡ΡŒ элСмСнт ΠΈΠ· массива. Как Π²Ρ‹ ΡƒΠΆΠ΅ догадались, Π²Ρ‹ ΠΏΠΎΠ»ΡƒΡ‡ΠΈΡ‚Π΅ пятый элСмСнт с component5. Но, ΠΊΠ°ΠΊ ΡƒΠΏΠΎΠΌΠΈΠ½Π°Π»ΠΎΡΡŒ Ρ€Π°Π½Π΅Π΅, Π²Π°ΠΌ Π½ΡƒΠΆΠ½ΠΎ Π±ΡƒΠ΄Π΅Ρ‚ ΠΏΠΎΠ²Ρ‚ΠΎΡ€ΠΈΡ‚ΡŒ эту строку нСсколько Ρ€Π°Π·, Ρ‡Ρ‚ΠΎΠ±Ρ‹ ΠΈΠ·Π²Π»Π΅Ρ‡ΡŒ всС ΠΊΠΎΠΌΠΏΠΎΠ½Π΅Π½Ρ‚Ρ‹.

Π’Π΅ΠΌ Π½Π΅ ΠΌΠ΅Π½Π΅Π΅, Π΄ΠΈΠ·Π°ΠΉΠ½Π΅Ρ€Ρ‹ Kotlin ΠΏΠΎΠ»Π°Π³Π°Π»ΠΈ, Ρ‡Ρ‚ΠΎ Ρ€Π°Π·Ρ€Π°Π±ΠΎΡ‚Ρ‡ΠΈΠΊΠ°ΠΌ Π½Π΅ потрСбуСтся большС, Ρ‡Π΅ΠΌ ΠΏΡΡ‚ΡŒ элСмСнтов, ΠΏΡ€ΠΈ использовании объявлСний дСструктуризации Π² массивС. Π­Ρ‚ΠΎ ΠΎΠ³Ρ€Π°Π½ΠΈΡ‡Π΅Π½ΠΈΠ΅ присутствуСт Π² ΠΏΠΎΡ…ΠΎΠΆΠΈΡ… Ρ‚ΠΈΠΏΠ°Ρ… Π΄Π°Π½Π½Ρ‹Ρ…, Π½Π°ΠΏΡ€ΠΈΠΌΠ΅Ρ€ списках.

Π”Π°Π»Π΅Π΅ Π²Ρ‹ ΡƒΠ²ΠΈΠ΄ΠΈΡ‚Π΅, ΠΊΠ°ΠΊ Π΄ΠΎΠ±Π°Π²ΠΈΡ‚ΡŒ Π² класс способ для извлСчСния Π±ΠΎΠ»Π΅Π΅ пяти элСмСнтов Π² ΠΎΠ±ΡŠΡΠ²Π»Π΅Π½ΠΈΡΡ… дСструктуризации.

Π‘Π»Π΅Π΄ΡƒΡŽΡ‰Π°Ρ Π²Π΅Ρ‰ΡŒ, ΠΊΠΎΡ‚ΠΎΡ€ΡƒΡŽ стоит ΠΎΡ‚ΠΌΠ΅Ρ‚ΠΈΡ‚ΡŒ, - Π²Ρ‹ ΠΏΠΎΠ»ΡƒΡ‡ΠΈΡ‚Π΅ ΠΏΠΎΡ…ΠΎΠΆΡƒΡŽ ΠΎΡˆΠΈΠ±ΠΊΡƒ, Ссли раскоммСнтируСтС эту строку val string6 = stringList.component6().

component1, component2 … componentN,Β  Π³Π΄Π΅ NΒ Β - это наибольший элСмСнт, ΠΊΠΎΡ‚ΠΎΡ€Ρ‹ΠΉ Π²Π°ΠΌ Π½ΡƒΠΆΠ½ΠΎ ΠΈΠ·Π²Π»Π΅Ρ‡ΡŒ, - ΡΠ²Π»ΡΡŽΡ‚ΡΡ ядром объявлСний дСструктуризации.Β 

ОбъявлСния дСструктуризации - это Ρ‚Π°ΠΊ ΠΆΠ΅ ΠΎΠ΄Π½Π° ΠΈΠ· особСнностСй языка Kotlin, ΠΊΠΎΡ‚ΠΎΡ€Ρ‹Π΅ ΠΎΠ±Ρ‹Ρ‡Π½ΠΎ Π½Π°Π·Ρ‹Π²Π°ΡŽΡ‚ β€œΡΠΈΠ½Ρ‚Π°ΠΊΡΠΈΡ‡Π΅ΡΠΊΠΈΠΉ сахар” для доступа ΠΊ component1, component2, …, componentNΒ Β Π² ΠΎΠ±ΡŠΠ΅ΠΊΡ‚Π΅.Β 

Массив ΠΈΠ»ΠΈ список ΠΏΠΎΠ΄Π΄Π΅Ρ€ΠΆΠΈΠ²Π°ΡŽΡ‚ ΠΈΠ·Π²Π»Π΅Ρ‡Π΅Π½ΠΈΠ΅ Ρ‚ΠΎΠ»ΡŒΠΊΠΎ Π΄ΠΎ пяти элСмСнтов, ΠΏΠΎΡ‚ΠΎΠΌΡƒ Ρ‡Ρ‚ΠΎ ΠΈΡ… классы ΠΎΠΏΡ€Π΅Π΄Π΅Π»ΡΡŽΡ‚ ΠΊΠΎΠΌΠΏΠΎΠ½Π΅Π½Ρ‚Ρ‹ Ρ‚ΠΎΠ»ΡŒΠΊΠΎ с 1 ΠΏΠΎ 5. Π’Ρ‹ ΠΌΠΎΠΆΠ΅Ρ‚Π΅ ΡƒΠ²ΠΈΠ΄Π΅Ρ‚ΡŒ ΠΎΠΏΡ€Π΅Π΄Π΅Π»Π΅Π½ΠΈΠ΅ component5 Π² этой Π΄ΠΎΠΊΡƒΠΌΠ΅Π½Ρ‚Π°Ρ†ΠΈΠΈ Kotlin, Π½ΠΎ Π²Ρ‹ Π½Π΅ Π½Π°ΠΉΠ΄Π΅Ρ‚Π΅ ΠΎΠΏΡ€Π΅Π΄Π΅Π»Π΅Π½ΠΈΠ΅ component6.

Помимо использования Ρ‚Π°ΠΊΠΎΠ³ΠΎ ΠΌΠ΅Ρ‚ΠΎΠ΄Π°, ΠΊΠ°ΠΊ component5, Π²Ρ‹ Ρ‚Π°ΠΊΠΆΠ΅ ΠΌΠΎΠΆΠ΅Ρ‚Π΅ ΠΈΠ·Π²Π»Π΅Ρ‡ΡŒ элСмСнт с ΠΏΠΎΠΌΠΎΡ‰ΡŒΡŽ ΠΎΠ±Ρ‹Ρ‡Π½ΠΎΠ³ΠΎ ΠΌΠ΅Ρ‚ΠΎΠ΄Π°, Ρ‚Π°ΠΊΠΎΠ³ΠΎ ΠΊΠ°ΠΊ индСкс, Π½Π°ΠΏΡ€ΠΈΠΌΠ΅Ρ€ stringList [3].

ΠœΠΎΠΆΠ΅Ρ‚Π΅ Π»ΠΈ Π²Ρ‹ ΠΏΡ€Π΅Π΄ΠΏΠΎΠ»ΠΎΠΆΠΈΡ‚ΡŒ, ΠΏΠΎΡ‡Π΅ΠΌΡƒ Π΄ΠΈΠ·Π°ΠΉΠ½Π΅Ρ€Ρ‹ Kotlin сдСлали Π²ΠΎΠ·ΠΌΠΎΠΆΠ½Ρ‹ΠΌ ΠΈΠ·Π²Π»Π΅Ρ‡ΡŒ с ΠΏΠΎΠΌΠΎΡ‰ΡŒΡŽ ΠΌΠ΅Ρ‚ΠΎΠ΄Π° объявлСния дСструктуризации максимум 5 элСмСнтов? Если Π±Ρ‹ Π½Π΅ Π±Ρ‹Π»ΠΎ установлСно ΠΎΠ³Ρ€Π°Π½ΠΈΡ‡Π΅Π½ΠΈΠ΅, Π²Ρ‹ Π±Ρ‹ ΠΌΠΎΠ³Π»ΠΈ ΠΈΠ·Π²Π»Π΅Ρ‡ΡŒ Π΄Π΅ΡΡΡ‚ΡŒ элСмСнтов, ΠΊΠ°ΠΊ здСсь:

val (tree, mountain, bridge, beach, castle, river, waterfall, forest, cave, tower, building, fortress) = words

Π‘Ρ‚Ρ€ΠΎΠΊΠ° Π²Ρ‹ΡˆΠ΅ ΠΈΠΌΠ΅Π΅Ρ‚ Π±ΠΎΠ»Π΅Π΅ ста символов Π² ΡˆΠΈΡ€ΠΈΠ½Ρƒ. ΠΠ΅Ρ…ΠΎΡ€ΠΎΡˆΠΎ ΠΏΠΈΡΠ°Ρ‚ΡŒ слишком Π΄Π»ΠΈΠ½Π½Ρ‹ΠΉ ΠΊΠΎΠ΄, ΠΏΠΎΡ‚ΠΎΠΌΡƒ Ρ‡Ρ‚ΠΎ Π΅Π³ΠΎ слоТнСС Ρ‡ΠΈΡ‚Π°Ρ‚ΡŒ. Π’Ρ‹ ΠΌΠΎΠΆΠ΅Ρ‚Π΅ Ρ€Π°Π·Π΄Π΅Π»ΠΈΡ‚ΡŒ ΠΏΠ΅Ρ€Π΅ΠΌΠ΅Π½Π½Ρ‹Π΅ с ΠΏΠΎΠΌΠΎΡ‰ΡŒΡŽ Π½ΠΎΠ²Ρ‹Ρ… строк, Π½ΠΎ Π² Ρ‚Π°ΠΊΠΎΠΌ случаС Π²Ρ‹ Ρ‚Π°ΠΊΠΆΠ΅ ΠΌΠΎΠΆΠ΅Ρ‚Π΅ ΠΈΡΠΏΠΎΠ»ΡŒΠ·ΠΎΠ²Π°Ρ‚ΡŒ ΠΈ ΠΎΠΏΠ΅Ρ€Π°Ρ‚ΠΎΡ€ индСкса для извлСчСния Π·Π½Π°Ρ‡Π΅Π½ΠΈΠΉ.

Π‘ΠΎΠ»Π΅Π΅ Ρ‚ΠΎΠ³ΠΎ, Π²Ρ‹Π·Π²Π°Ρ‚ΡŒ нСсколько элСмСнтов ΡƒΠΆΠ΅ слоТнСС. Π’ ΠΏΡ€ΠΈΠΌΠ΅Ρ€Π΅ Π½Π°Π²Π΅Ρ€Ρ…Ρƒ cave - дСвятый элСмСнт Π² words. Π§Ρ‚ΠΎΠ±Ρ‹ ΡƒΠ±Π΅Π΄ΠΈΡ‚ΡŒΡΡ, Ρ‡Ρ‚ΠΎ элСмСнт cave ΠΏΠΎΠ»ΡƒΡ‡ΠΈΠ» Π²Π΅Ρ€Π½ΠΎΠ΅ Π·Π½Π°Ρ‡Π΅Π½ΠΈΠ΅, Π²Ρ‹ Π΄ΠΎΠ»ΠΆΠ½Ρ‹ ΠΏΠΎΡΡ‡ΠΈΡ‚Π°Ρ‚ΡŒ ΠΎΡ‚ ΠΏΠ΅Ρ€Π²ΠΎΠ³ΠΎ элСмСнта tree Π΄ΠΎ дСвятого элСмСнта cave ΠΈ ΠΏΡ€ΠΈ этом Π½Π΅ ΠΎΡˆΠΈΠ±ΠΈΡ‚ΡŒΡΡ Π² подсчСтС.Β 

Π’Ρ‹ Ρ‚Π°ΠΊ ΠΆΠ΅ ΠΌΠΎΠΆΠ΅Ρ‚Π΅ ΠΈΡΠΏΠΎΠ»ΡŒΠ·ΠΎΠ²Π°Ρ‚ΡŒ ΠΎΠΏΠ΅Ρ€Π°Ρ‚ΠΎΡ€ индСкса ΠΊΠ°ΠΊ здСсь:

val tree = words[0]
val cave = words[8]

ИмСя Π² Π²ΠΈΠ΄Ρƒ всС это, Π΄ΠΈΠ·Π°ΠΉΠ½Π΅Ρ€Ρ‹ Kotlin установили максимальноС количСство элСмСнтов Ρ€Π°Π²Π½Ρ‹ΠΌ пяти ΠΏΡ€ΠΈ использовании объявлСний дСструктуризации со структурой Π΄Π°Π½Π½Ρ‹Ρ… Ρ‚ΠΈΠΏΠ° ΠΊΠΎΠ»Π»Π΅ΠΊΡ†ΠΈΠΈ. Если Π²Ρ‹ ΠΈΠ·Π²Π»Π΅ΠΊΠ°Π΅Ρ‚Π΅ Π±ΠΎΠ»Π΅Π΅ пяти элСмСнтов, Π²Ρ‹ злоупотрСбляСтС API.

Но Ρ‡Ρ‚ΠΎ, Ссли Π²Π°ΠΌ Π½ΡƒΠΆΠ½Ρ‹ Ρ‚ΠΎΠ»ΡŒΠΊΠΎ ΠΏΠ΅Ρ€Π²Ρ‹ΠΉ ΠΈ пятый элСмСнты, Π½ΠΎ Π½Π΅ Ρ‚Ρ€ΠΈ элСмСнта ΠΌΠ΅ΠΆΠ΄Ρƒ Π½ΠΈΠΌΠΈ? Как это ΡΠ΄Π΅Π»Π°Ρ‚ΡŒ Π²Ρ‹ ΡƒΠ·Π½Π°Π΅Ρ‚Π΅ дальшС.

ΠŸΡ€ΠΎΠΏΡƒΡΠΊ ΠΏΠ΅Ρ€Π΅ΠΌΠ΅Π½Π½Ρ‹Ρ… Π² ΠΎΠ±ΡŠΡΠ²Π»Π΅Π½ΠΈΡΡ… дСструктуризации

Π’Ρ‹ ΠΌΠΎΠΆΠ΅Ρ‚Π΅ ΠΎΠΏΡƒΡΡ‚ΠΈΡ‚ΡŒ ΠΏΠ΅Ρ€Π΅ΠΌΠ΅Π½Π½Ρ‹Π΅, ΠΊΠΎΡ‚ΠΎΡ€Ρ‹Π΅ Π²Π°ΠΌ Π½Π΅ Π½ΡƒΠΆΠ½Ρ‹, с ΠΏΠΎΠΌΠΎΡ‰ΡŒΡŽ подчСркивания. Π˜ΡΠΏΠΎΠ»ΡŒΠ·ΡƒΡ этот ΠΏΠΎΠ΄Ρ…ΠΎΠ΄, Π²Ρ‹ ΠΈΠ·Π±Π΅Π³Π°Π΅Ρ‚Π΅ загрязнСния мСста для ΠΈΠΌΠ΅Π½. Π—Π° ΠΊΠ°Π΄Ρ€ΠΎΠΌ Kotlin Π½Π΅ Π±ΡƒΠ΄Π΅Ρ‚ Π²Ρ‹Π·Ρ‹Π²Π°Ρ‚ΡŒ component2, component3 ΠΈ component4.

Π—Π°ΠΌΠ΅Π½ΠΈΡ‚Π΅ TODO 2Β ΠΊΠΎΠ΄ΠΎΠΌ Π½ΠΈΠΆΠ΅:

val (string1, _, _, _, string5) = stringList
println("$string1, $string5")

Π‘ΠΊΠΎΠΌΠΏΠΈΠ»ΠΈΡ€ΡƒΠΉΡ‚Π΅ ΠΈ запуститС. Π’Ρ‹ ΠΌΠΎΠΆΠ΅Ρ‚Π΅ ΡƒΠ²ΠΈΠ΄Π΅Ρ‚ΡŒ значСния string1 ΠΈ string5.

Β 

Β Π’ этом случаС Python Π²Π΄ΠΎΡ…Π½ΠΎΠ²ΠΈΠ» Kotlin. Π’ Python ΠΏΠΎΠ΄Ρ‡Π΅Ρ€ΠΊΠΈΠ²Π°Π½ΠΈΠ΅ - это Π²Ρ‹Π±Ρ€ΠΎΡˆΠ΅Π½Π½Π°Ρ пСрСмСнная, Π·Π½Π°Ρ‡Π΅Π½ΠΈΠ΅ ΠΊΠΎΡ‚ΠΎΡ€ΠΎΠΉ Π²Ρ‹ Ρ…ΠΎΡ‚ΠΈΡ‚Π΅ ΠΏΡ€ΠΎΠΈΠ³Π½ΠΎΡ€ΠΈΡ€ΠΎΠ²Π°Ρ‚ΡŒ.

Если Π²Π°ΠΌ интСрСсно, ΠΏΠΎΡ‡Π΅ΠΌΡƒ Π²Ρ‹ Π½Π΅ ΠΌΠΎΠΆΠ΅Ρ‚Π΅ ΠΈΡΠΏΠΎΠ»ΡŒΠ·ΠΎΠ²Π°Ρ‚ΡŒ Ρ€Π°Π·Π½Ρ‹Π΅ ΠΈΠΌΠ΅Π½Π° для этих Π²Ρ‹Π±Ρ€ΠΎΡˆΠ΅Π½Π½Ρ‹Ρ… ΠΏΠ΅Ρ€Π΅ΠΌΠ΅Π½Π½Ρ‹Ρ…, ΠΎΡ‚Π²Π΅Ρ‚ - Π²Ρ‹ ΠΌΠΎΠΆΠ΅Ρ‚Π΅. Но Π²Π°ΠΌ Π½ΡƒΠΆΠ½ΠΎ Π±ΡƒΠ΄Π΅Ρ‚ ΠΏΡ€ΠΈΠ΄ΡƒΠΌΠ°Ρ‚ΡŒ Ρ€Π°Π·Π½Ρ‹Π΅ названия для Π±ΠΎΠ»Π΅Π΅ Ρ‡Π΅ΠΌ ΠΎΠ΄Π½ΠΎΠΉ ΠΈΠ³Π½ΠΎΡ€ΠΈΡ€ΡƒΠ΅ΠΌΠΎΠΉ ΠΏΠ΅Ρ€Π΅ΠΌΠ΅Π½Π½ΠΎΠΉ. Для ΠΏΡ€ΠΈΠΌΠ΅Ρ€Π°, Π²Ρ‹ ΠΌΠΎΠΆΠ΅Ρ‚Π΅ ΠΈΡΠΏΠΎΠ»ΡŒΠ·ΠΎΠ²Π°Ρ‚ΡŒ для имСнования ΠΏΠ΅Ρ€Π΅ΠΌΠ΅Π½Π½Ρ‹Ρ… всСго ΠΎΠ΄ΠΈΠ½ символ, ΠΊΠ°ΠΊ здСсь:

val (string1, a, b, c, string5) = stringList
println("$string1, $string5")

Π’ ΠΏΡ€ΠΈΠ²Π΅Π΄Π΅Π½Π½ΠΎΠΌ Π²Ρ‹ΡˆΠ΅ ΠΊΠΎΠ΄Π΅ Π²Ρ‹ ΠΈΠ³Π½ΠΎΡ€ΠΈΡ€ΡƒΠ΅Ρ‚Π΅ a, b ΠΈ c. Но Π²Ρ‹ ΠΊΠ°ΠΊ-Ρ‚ΠΎ Π΄ΠΎΠ»ΠΆΠ½Ρ‹ Ρ…Ρ€Π°Π½ΠΈΡ‚ΡŒ лишнюю ΠΈΠ½Ρ„ΠΎΡ€ΠΌΠ°Ρ†ΠΈΡŽ ΠΎ Ρ‚ΠΎΠΌ, Ρ‡Ρ‚ΠΎ Π΅ΡΡ‚ΡŒ Ρ‚Ρ€ΠΈ ΠΏΠ΅Ρ€Π΅ΠΌΠ΅Π½Π½Ρ‹Π΅, ΠΊΠΎΡ‚ΠΎΡ€Ρ‹Π΅ Π² ΠΊΠΎΠ½Π΅Ρ‡Π½ΠΎΠΌ ΠΈΡ‚ΠΎΠ³Π΅ Π²Ρ‹ Π½Π΅ ΠΈΡΠΏΠΎΠ»ΡŒΠ·ΡƒΠ΅Ρ‚Π΅ Π² ΠΎΡΡ‚Π°Π»ΡŒΠ½ΠΎΠΉ части ΠΊΠΎΠ΄Π°. Для вашСго ΠΌΠΎΠ·Π³Π° Π»Π΅Π³Ρ‡Π΅ ΠΈΡΠΏΠΎΠ»ΡŒΠ·ΠΎΠ²Π°Ρ‚ΡŒ ΠΏΠΎΠ΄Ρ‡Π΅Ρ€ΠΊΠΈΠ²Π°Π½ΠΈΠ΅.Β 

Но Ρ‡Ρ‚ΠΎ, Ссли Π²Ρ‹ Ρ…ΠΎΡ‚ΠΈΡ‚Π΅ ΠΈΡΠΏΠΎΠ»ΡŒΠ·ΠΎΠ²Π°Ρ‚ΡŒ ΠΎΠ΄Π½ΠΎ ΠΈ Ρ‚ΠΎ ΠΆΠ΅ имя для ΠΊΠ°ΠΆΠ΄ΠΎΠΉ Π½Π΅ΠΈΡΠΏΠΎΠ»ΡŒΠ·ΡƒΠ΅ΠΌΠΎΠΉ ΠΏΠ΅Ρ€Π΅ΠΌΠ΅Π½Π½ΠΎΠΉ? НапримСр, Π²Ρ‹Π±ΠΈΡ€Π°Π΅ΠΌ tmp Π² качСствС ΠΈΠΌΠ΅Π½ΠΈ для ΠΊΠ°ΠΆΠ΄ΠΎΠΉ Ρ‚Π°ΠΊΠΎΠΉ ΠΏΠ΅Ρ€Π΅ΠΌΠ΅Π½Π½ΠΎΠΉ ΠΊΠ°ΠΊ здСсь:

val (string1, tmp, tmp, tmp, string5) = stringList
println("$string1, $string5")

Если Π²Ρ‹ ΠΈΡΠΏΠΎΠ»ΡŒΠ·ΡƒΠ΅Ρ‚Π΅ ΠΎΠ΄Π½ΠΎ ΠΈ Ρ‚ΠΎ ΠΆΠ΅ имя для Π½Π΅ΡΠΊΠΎΠ»ΡŒΠΊΠΈΡ… объявлСний ΠΏΠ΅Ρ€Π΅ΠΌΠ΅Π½Π½Ρ‹Ρ…, Π²Ρ‹ ΠΏΠΎΠ»ΡƒΡ‡ΠΈΡ‚Π΅ ΠΎΡˆΠΈΠ±ΠΊΡƒ: ΠΊΠΎΠ½Ρ„Π»ΠΈΠΊΡ‚ объявлСний.

ΠžΡ‚Π»ΠΈΡ‡Π½Π°Ρ Ρ€Π°Π±ΠΎΡ‚Π°! Π’Π΅ΠΏΠ΅Ρ€ΡŒ, ΠΊΠΎΠ³Π΄Π° Π²Ρ‹ Π·Π½Π°Π΅Ρ‚Π΅, ΠΊΠ°ΠΊ ΠΈΡΠΏΠΎΠ»ΡŒΠ·ΠΎΠ²Π°Ρ‚ΡŒ объявлСния дСструктуризации, Π²Ρ‹ ΠΈΠ·ΡƒΡ‡ΠΈΡ‚Π΅ распространСнныС Π²Π°Ρ€ΠΈΠ°Π½Ρ‚Ρ‹ примСнСния, Π² ΠΊΠΎΡ‚ΠΎΡ€Ρ‹Ρ… Π²Ρ‹ Π·Π°Ρ…ΠΎΡ‚ΠΈΡ‚Π΅ ΠΈΡ… ΠΈΡΠΏΠΎΠ»ΡŒΠ·ΠΎΠ²Π°Ρ‚ΡŒ.

ΠžΠ±Ρ‰ΠΈΠΉ сцСнарий использования ОбъявлСний ДСструктуризации

И хотя объявлСния дСструктуризации Π½Π΅ Ρ‚Π°ΠΊ часты Π² ΠΊΠΎΠ΄Π΅ Π½ΠΎΠ²ΠΈΡ‡ΠΊΠ°, ΠΎΠ½ΠΈ ΠΌΠΎΠ³ΡƒΡ‚ Π±Ρ‹Ρ‚ΡŒ ΠΏΠΎΠ»Π΅Π·Π½Ρ‹ Π²ΠΎ ΠΌΠ½ΠΎΠ³ΠΈΡ… ситуациях ΠΈ ΡΠ΄Π΅Π»Π°Ρ‚ΡŒ ваш ΠΊΠΎΠ΄ Π»ΡƒΡ‡ΡˆΠ΅. Π’ этой части ΠΌΡ‹ пройдСмся ΠΏΠΎ распространСнным случаям ΠΈΡ… примСнСния.Β 

Π—Π°ΠΌΠ΅Π½ΠΈΡ‚Π΅ TODO 3Β Π½Π° ΡΠ»Π΅Π΄ΡƒΡŽΡ‰ΠΈΠΉ ΠΊΠΎΠ΄:

val (bitcoinFromFunction, btcFromFunction) = functionReturningPair()
println("$bitcoinFromFunction, $btcFromFunction")

ВзглянитС Π½Π° Ρ„ΡƒΠ½ΠΊΡ†ΠΈΡŽ двумя строчками Π²Ρ‹ΡˆΠ΅ ΠΊΠΎΠ΄Π°, ΠΊΠΎΡ‚ΠΎΡ€Ρ‹ΠΉ Π²Ρ‹ Ρ‚ΠΎΠ»ΡŒΠΊΠΎ Ρ‡Ρ‚ΠΎ Π΄ΠΎΠ±Π°Π²ΠΈΠ»ΠΈ:Β 

fun functionReturningPair() : Pair = Pair("Bitcoin", β€œBTC”)

Π”ΠΎΠ²ΠΎΠ»ΡŒΠ½ΠΎ простая функция, Π²Ρ‹ просто Π²ΠΎΠ·Π²Ρ€Π°Ρ‰Π°Π΅Ρ‚Π΅ ΠΏΠ°Ρ€Ρƒ. Π’ Ρ€Π΅Π°Π»ΡŒΠ½ΠΎΠΉ ΠΆΠΈΠ·Π½ΠΈ такая функция Π±ΡƒΠ΄Π΅Ρ‚ Π²Ρ‹ΠΏΠΎΠ»Π½ΡΡ‚ΡŒ ΠΎΠΏΡ€Π΅Π΄Π΅Π»Π΅Π½Π½ΡƒΡŽ ΠΎΠ±Ρ€Π°Π±ΠΎΡ‚ΠΊΡƒ, Π° Π·Π°Ρ‚Π΅ΠΌ Π²ΠΎΠ·Π²Ρ€Π°Ρ‰Π°Ρ‚ΡŒ Π·Π½Π°Ρ‡Π΅Π½ΠΈΠ΅, Π½ΠΎ для ΠΏΡ€ΠΈΠΌΠ΅Ρ€Π° ΠΎΠ½Π° ΡƒΠΏΡ€ΠΎΡ‰Π΅Π½Π°.Β 

Π‘ΠΊΠΎΠΌΠΏΠΈΠ»ΠΈΡ€ΡƒΠΉΡ‚Π΅ ΠΈ запуститС. Π’Ρ‹ Π²ΠΈΠ΄ΠΈΡ‚Π΅ значСния bitcoinFromFunction ΠΈ btcFromFunction.

Π Π°Π·Ρ€Π°Π±ΠΎΡ‚Ρ‡ΠΈΠΊΠΈ ΠΎΠ±Ρ‹Ρ‡Π½ΠΎ ΠΈΡΠΏΠΎΠ»ΡŒΠ·ΡƒΡŽΡ‚ объявлСния дСструктуризации, ΠΊΠΎΠ³Π΄Π° ΠΎΠ½ΠΈ хотят Π²Π΅Ρ€Π½ΡƒΡ‚ΡŒ Π±ΠΎΠ»Π΅Π΅ ΠΎΠ΄Π½ΠΎΠ³ΠΎ значСния Π² Ρ„ΡƒΠ½ΠΊΡ†ΠΈΠΈ ΠΈ ΠΈΡΠΏΠΎΠ»ΡŒΠ·ΠΎΠ²Π°Ρ‚ΡŒ ΠΈΡ… сразу послС выполнСния Ρ„ΡƒΠ½ΠΊΡ†ΠΈΠΈ.

ΠΠ»ΡŒΡ‚Π΅Ρ€Π½Π°Ρ‚ΠΈΠ²ΠΎΠΉ этому Π±ΡƒΠ΄Π΅Ρ‚ объСдинСниС Ρ€Π΅Π·ΡƒΠ»ΡŒΡ‚Π°Ρ‚Π° Π²ΠΎΠ·Π²Ρ€Π°Ρ‚Π° со структурой Π΄Π°Π½Π½Ρ‹Ρ… ΠΊΠΎΠ»Π»Π΅ΠΊΡ†ΠΈΠΈ, Π° Π·Π°Ρ‚Π΅ΠΌ Ρ€Π°Π·Π΄Π΅Π»Π΅Π½ΠΈΠ΅ Π΅Π³ΠΎ с ΠΏΠΎΠΌΠΎΡ‰ΡŒΡŽ ΠΎΠΏΠ΅Ρ€Π°Ρ‚ΠΎΡ€Π° индСкса ΠΈΠ»ΠΈ объявлСний дСструктуризации. Как ΠΏΠΎΠΊΠ°Π·Π°Π½ΠΎ Π² ΠΏΡ€ΠΈΠ²Π΅Π΄Π΅Π½Π½ΠΎΠΌ Π½ΠΈΠΆΠ΅ ΠΊΠΎΠ΄Π΅, это нСэффСктивно:

val aPair = functionReturningPair()
val bitcoinFromFunction = aPair[0]
val btcFromFunction = aPair[1]
println("$bitcoinFromFunction, $btcFromFunction")

Код Π±ΠΎΠ»Π΅Π΅ β€œΠΌΠ½ΠΎΠ³ΠΎΡΠ»ΠΎΠ²Π½Ρ‹ΠΉβ€.Β 

Достаточно ΠΎΠ±Ρ‹Ρ‡Π½ΠΎ Π²Π΅Ρ€Π½ΡƒΡ‚ΡŒ ΠΈΠ· Ρ„ΡƒΠ½ΠΊΡ†ΠΈΠΈ ΠΊΠΎΠ»Π»Π΅ΠΊΡ†ΠΈΡŽ Π΄Π°Π½Π½Ρ‹Ρ…. НапримСр, Ρƒ вас ΠΌΠΎΠΆΠ΅Ρ‚ Π±Ρ‹Ρ‚ΡŒ функция, которая вычисляСт Π΄ΠΎΠ»Π³ΠΎΡ‚Ρƒ ΠΈ ΡˆΠΈΡ€ΠΎΡ‚Ρƒ мСстополоТСния.Β 

Но Π·Π° ΠΏΡ€Π΅Π΄Π΅Π»Π°ΠΌΠΈ Ρ„ΡƒΠ½ΠΊΡ†ΠΈΠΈ Π²ΠΎΠ·ΠΌΠΎΠΆΠ½ΠΎ Π²Ρ‹ Π·Π°Ρ…ΠΎΡ‚ΠΈΡ‚Π΅ ΠΈΡΠΏΠΎΠ»ΡŒΠ·ΠΎΠ²Π°Ρ‚ΡŒ ΡˆΠΈΡ€ΠΎΡ‚Ρƒ ΠΈ Π΄ΠΎΠ»Π³ΠΎΡ‚Ρƒ ΠΎΡ‚Π΄Π΅Π»ΡŒΠ½ΠΎ Π΄Ρ€ΡƒΠ³ ΠΎΡ‚ Π΄Ρ€ΡƒΠ³Π°, Π° Π½Π΅ Π² связкС. Π’ этой ситуации ΡƒΠ΄ΠΎΠ±Π½ΠΎ ΠΈΡΠΏΠΎΠ»ΡŒΠ·ΠΎΠ²Π°Ρ‚ΡŒ объявлСния дСструктуризации.Β 

ОбъявлСния дСструктуризации ΠΊΠ°Ρ€Ρ‚Ρ‹

Другая структура Π΄Π°Π½Π½Ρ‹Ρ…, Π² ΠΊΠΎΡ‚ΠΎΡ€ΠΎΠΉ Π²Ρ‹ ΠΌΠΎΠΆΠ΅Ρ‚Π΅ ΠΈΡΠΏΠΎΠ»ΡŒΠ·ΠΎΠ²Π°Ρ‚ΡŒ объявлСния дСструктуризации, - это итСрация ΠΊΠ°Ρ€Ρ‚Ρ‹. ΠšΠ°Ρ€Ρ‚Ρ‹ - это ΠΏΠ°Ρ€Ρ‹ ΠΊΠ»ΡŽΡ‡-Π·Π½Π°Ρ‡Π΅Π½ΠΈΠ΅, сгруппированныС Π² ΠΊΠΎΠ»Π»Π΅ΠΊΡ†ΠΈΡŽ. Они ΠΏΠΎΡ…ΠΎΠΆΠΈ Π½Π° массив, с Ρ‚ΠΎΠΉ Ρ€Π°Π·Π½ΠΈΡ†Π΅ΠΉ, Ρ‡Ρ‚ΠΎ Π²Ρ‹ ΠΌΠΎΠΆΠ΅Ρ‚Π΅ Π΄Π°Ρ‚ΡŒ ΠΊΠ»ΡŽΡ‡Ρƒ имя, Π° Π½Π΅ порядковый Π½ΠΎΠΌΠ΅Ρ€.Β 

Π—Π°ΠΌΠ΅Π½ΠΈΡ‚Π΅ TODO 4Β Π½Π°:Β 

for ((cryptoFullname, cryptoSymbol) in cryptoSymbolMap) {
    println("$cryptoFullname, $cryptoSymbol")
}

Π‘ΠΊΠΎΠΌΠΏΠΈΠ»ΠΈΡ€ΡƒΠΉΡ‚Π΅ ΠΈ запуститС. Π’Ρ‹ ΠΌΠΎΠΆΠ΅Ρ‚Π΅ ΡƒΠ²ΠΈΠ΄Π΅Ρ‚ΡŒ ΠΊΠ»ΡŽΡ‡ ΠΈ Π·Π½Π°Ρ‡Π΅Π½ΠΈΠ΅ ΠΊΠ°ΠΆΠ΄ΠΎΠ³ΠΎ элСмСнта Π² ΠΊΠ°Ρ€Ρ‚Π΅.Β 

Π’ ΠΊΠΎΠ΄Π΅ Π²Ρ‹ΡˆΠ΅ cryptoSymbolMap являСтся ΠΊΠ°Ρ€Ρ‚ΠΎΠΉ. Π’Ρ‹ ΠΈΡΠΏΠΎΠ»ΡŒΠ·ΡƒΠ΅Ρ‚Π΅ объявлСниС дСструктуризации элСмСнта Π² Ρ‚ΠΎ врСмя, ΠΊΠ°ΠΊ происходит итСрация ΠΊΠ°Ρ€Ρ‚Ρ‹, Π·Π°ΠΊΠ»ΡŽΡ‡Π°Ρ Π΄Π²Π΅ Ρ€Π°Π·Π΄Π΅Π»Π΅Π½Π½Ρ‹Π΅ запятой ΠΏΠ΅Ρ€Π΅ΠΌΠ΅Π½Π½Ρ‹Π΅ Π² скобки.Β 

ΠŸΠ΅Ρ€Π²Π°Ρ пСрСмСнная - это ΠΊΠ»ΡŽΡ‡ элСмСнта, Π° вторая - Π·Π½Π°Ρ‡Π΅Π½ΠΈΠ΅ элСмСнта. Π­Ρ‚ΠΎ ΠΏΠΎΡ…ΠΎΠΆΠ΅ Π½Π° ΠΏΡ€Π΅Π΄Ρ‹Π΄ΡƒΡ‰ΠΈΠΉ способ дСструктуризации элСмСнтов, Π½ΠΎ Π²Ρ‹ Π½Π΅ ΠΈΡΠΏΠΎΠ»ΡŒΠ·ΡƒΠ΅Ρ‚Π΅ val ΠΈΠ»ΠΈ var.

Π’Π°ΠΊΠΈΠΌ ΠΆΠ΅ способом Π²Ρ‹ ΠΏΡ€ΠΎΠΈΠ·Π²ΠΎΠ΄ΠΈΡ‚Π΅ ΠΈΡ‚Π΅Ρ€Π°Ρ†ΠΈΡŽ ΠΊΠ°Ρ€Ρ‚Ρ‹ с ΠΌΠ΅Ρ‚ΠΎΠ΄ΠΎΠΌ forEach.

ОбъявлСниС дСструктуризации Π² лямбда-функциях.

Лямбда-Ρ„ΡƒΠ½ΠΊΡ†ΠΈΠΈ ΠΎΡ‡Π΅Π½ΡŒ распространСны Π² ΠΊΠΎΠ΄Π΅ Kotlin ΠΈ Π² Π±ΠΎΠ»ΡŒΡˆΠΈΠ½ΡΡ‚Π²Π΅ соврСмСнных языков программирования, лямбда-Ρ„ΡƒΠ½ΠΊΡ†ΠΈΠΈ ΠΈΠΌΠ΅ΡŽΡ‚ синтаксис {a, b -> a + b}. Π’ этом Ρ€Π°Π·Π΄Π΅Π»Π΅ ΠΌΡ‹ рассмотрим, ΠΊΠ°ΠΊ объявлСния дСструктуризации ΠΌΠΎΠ³ΡƒΡ‚ Π±Ρ‹Ρ‚ΡŒ ΠΏΠΎΠ»Π΅Π·Π½Ρ‹ Π² Ρ‚Π°ΠΊΠΎΠ³ΠΎ Ρ€ΠΎΠ΄Π° функциях.

Π—Π°ΠΌΠ΅Π½ΠΈΡ‚Π΅ TODO 5Β Π½Π°:Β 

cryptoSymbolMap.forEach { (cryptoFullname, cryptoSymbol) ->
    println("$cryptoFullname, $cryptoSymbol")
}

Π‘ΠΊΠΎΠΌΠΏΠΈΠ»ΠΈΡ€ΡƒΠΉΡ‚Π΅ ΠΈ запуститС. Π’Ρ‹ ΡƒΠ²ΠΈΠ΄ΠΈΡ‚Π΅ ΠΊΠ»ΡŽΡ‡ ΠΈ Π·Π½Π°Ρ‡Π΅Π½ΠΈΠ΅ ΠΊΠ°ΠΆΠ΄ΠΎΠ³ΠΎ элСмСнта Π² ΠΊΠ°Ρ€Ρ‚Π΅.

Β 

Π’ ΠΏΡ€ΠΈΠ²Π΅Π΄Π΅Π½Π½ΠΎΠΌ Π²Ρ‹ΡˆΠ΅ ΠΊΠΎΠ΄Π΅ forEachΒ ΠΏΡ€ΠΈΠ½ΠΈΠΌΠ°Π΅Ρ‚ лямбда, ΠΏΡ€ΠΈΠ½ΠΈΠΌΠ°ΡŽΡ‰Π°Ρ ΠΏΠ°Ρ€Π°ΠΌΠ΅Ρ‚Ρ€. Π’Ρ‹ ΠΈΡΠΏΠΎΠ»ΡŒΠ·ΡƒΠ΅Ρ‚Π΅ объявлСния дСструктуризации для этого ΠΏΠ°Ρ€Π°ΠΌΠ΅Ρ‚Ρ€Π°, Ρ‡Ρ‚ΠΎΠ±Ρ‹ ΠΈΠ·Π²Π»Π΅Ρ‡ΡŒ ΠΈΡ… Π² Π΄Π²Π΅ ΠΏΠ΅Ρ€Π΅ΠΌΠ΅Π½Π½Ρ‹Π΅.

Π’ΠΈΠΏ ΠΏΠ΅Ρ€Π΅ΠΌΠ΅Π½Π½ΠΎΠΉ Π² Ρ€Π΅Π·ΡƒΠ»ΡŒΡ‚Π°Ρ‚Π΅ ΠΊΠ°ΠΆΠ΄ΠΎΠΉ ΠΈΡ‚Π΅Ρ€Π°Ρ†ΠΈΠΈ - Entry, ΠΏΡ€Π΅Π΄ΡΡ‚Π°Π²Π»ΡΡŽΡ‰ΠΈΠΉ ΠΏΠ°Ρ€Ρƒ ΠΊΠ»ΡŽΡ‡/Π·Π½Π°Ρ‡Π΅Π½ΠΈΠ΅ Π²Π½ΡƒΡ‚Ρ€ΠΈ Map. Π’ Π½Π΅ΠΌ Π΅ΡΡ‚ΡŒ ΠΌΠ΅Ρ‚ΠΎΠ΄Ρ‹, с ΠΊΠΎΡ‚ΠΎΡ€Ρ‹ΠΌΠΈ Π²Ρ‹ Π·Π½Π°ΠΊΠΎΠΌΡ‹, Π½Π°ΠΏΡ€ΠΈΠΌΠ΅Ρ€: component1 ΠΈ component2.

Если Π²Ρ‹ ΠΏΡ€ΠΎΡ‡ΠΈΡ‚Π°Π΅Ρ‚Π΅ ΠΎΠΏΡ€Π΅Π΄Π΅Π»Π΅Π½ΠΈΠ΅ component1, Π²Ρ‹ ΡƒΠ²ΠΈΠ΄ΠΈΡ‚Π΅, Ρ‡Ρ‚ΠΎ ΠΌΠ΅Ρ‚ΠΎΠ΄ Π²ΠΎΠ·Π²Ρ€Π°Ρ‰Π°Π΅Ρ‚ ΠΊΠΎΠΌΠΏΠΎΠ½Π΅Π½Ρ‚ ΠšΠ»ΡŽΡ‡Π° этого Entry. Π’ΠΎΡ‡Π½ΠΎ Ρ‚Π°ΠΊ ΠΆΠ΅, Ссли Π²Ρ‹ ΠΏΡ€ΠΎΡ‡ΠΈΡ‚Π°Π΅Ρ‚Π΅ ΠΎΠΏΡ€Π΅Π΄Π΅Π»Π΅Π½ΠΈΠ΅ component2, Π²Ρ‹ ΡƒΠ²ΠΈΠ΄ΠΈΡ‚Π΅, Ρ‡Ρ‚ΠΎ ΠΌΠ΅Ρ‚ΠΎΠ΄ Π²ΠΎΠ·Π²Ρ€Π°Ρ‰Π°Π΅Ρ‚ ΠΊΠΎΠΌΠΏΠΎΠ½Π΅Π½Ρ‚ ЗначСния этого Entry. Π’Π°ΠΊΠΆΠ΅ сущСствуСт ΠΌΠ΅Ρ‚ΠΎΠ΄ прСобразования Entry Π² ΠΏΠ°Ρ€Ρƒ.Β 

ОбъявлСния дСструктуризации Π² лямбду

Π•ΡΡ‚ΡŒ Ρ€Π°Π·Π½ΠΈΡ†Π° ΠΌΠ΅ΠΆΠ΄Ρƒ лямбдой, которая ΠΏΡ€ΠΈΠ½ΠΈΠΌΠ°Π΅Ρ‚ Π΄Π²Π° ΠΏΠ°Ρ€Π°ΠΌΠ΅Ρ‚Ρ€Π°, ΠΈ лямбдой, которая ΠΏΡ€ΠΈΠ½ΠΈΠΌΠ°Π΅Ρ‚ ΠΎΠ΄ΠΈΠ½ ΠΏΠ°Ρ€Π°ΠΌΠ΅Ρ‚Ρ€. Π’Ρ‹ ΠΌΠΎΠΆΠ΅Ρ‚Π΅ ΠΈΡΠΏΠΎΠ»ΡŒΠ·ΠΎΠ²Π°Ρ‚ΡŒ объявлСния дСструктуризации Π²Π½ΡƒΡ‚Ρ€ΠΈ лямбды, которая ΠΏΡ€ΠΈΠ½ΠΈΠΌΠ°Π΅Ρ‚ ΠΎΠ΄ΠΈΠ½ ΠΏΠ°Ρ€Π°ΠΌΠ΅Ρ‚Ρ€.

ΠŸΠΎΡΠΌΠΎΡ‚Ρ€ΠΈΡ‚Π΅ Π½Π° ΠΏΡ€ΠΈΠΌΠ΅Ρ€ лямбды с двумя ΠΏΠ°Ρ€Π°ΠΌΠ΅Ρ‚Ρ€Π°ΠΌΠΈ:

val lambdaCrypto = { name: String, symbol: String ->
    println("$name, $symbol")
}
lambdaCrypto("Bitcoin", "BTC")

Π—Π΄Π΅ΡΡŒ Π²Ρ‹ Π²Ρ‹Π·Ρ‹Π²Π°Π΅Ρ‚Π΅ лямбду с двумя ΠΏΠ°Ρ€Π°ΠΌΠ΅Ρ‚Ρ€Π°ΠΌΠΈ: ΠΈΠΌΠ΅Π½Π΅ΠΌ ΠΈ символом, ΠΊΠΎΡ‚ΠΎΡ€Ρ‹Π΅ ΠΈΠΌΠ΅ΡŽΡ‚ Ρ‚ΠΈΠΏ String.

Π’Π΅ΠΏΠ΅Ρ€ΡŒ посмотрим Π½Π° ΠΏΡ€ΠΈΠΌΠ΅Ρ€ Ρ‚ΠΎΠΉ ΠΆΠ΅ лямбды Ρ‚ΠΎΠ»ΡŒΠΊΠΎ с ΠΎΠ΄Π½ΠΈΠΌ ΠΏΠ°Ρ€Π°ΠΌΠ΅Ρ‚Ρ€ΠΎΠΌ. Π’Ρ‹ ΠΈΡΠΏΠΎΠ»ΡŒΠ·ΡƒΠ΅Ρ‚Π΅ объявлСния дСструктуризации для этого ΠΏΠ°Ρ€Π°ΠΌΠ΅Ρ‚Ρ€Π°, Ρ‡Ρ‚ΠΎΠ±Ρ‹ ΠΈΠ·Π²Π»Π΅Ρ‡ΡŒ ΠΈΡ… Π² Π΄Π²Π΅ ΠΏΠ΅Ρ€Π΅ΠΌΠ΅Π½Π½Ρ‹Π΅.

Π—Π°ΠΌΠ΅Π½ΠΈΡ‚Π΅ TODO 6 Π½Π°:Β 

val lambdaCrypto2 = { (name: String, symbol: String): Parameter ->
    println("$name, $symbol")
}
lambdaCrypto2(param)

Π‘ΠΊΠΎΠΌΠΏΠΈΠ»ΠΈΡ€ΡƒΠΉΡ‚Π΅ ΠΈ запуститС. Π’Ρ‹ ΠΌΠΎΠΆΠ΅Ρ‚Π΅ ΡƒΠ²ΠΈΠ΄Π΅Ρ‚ΡŒ значСния name ΠΈ symbol.

Β 

ΠžΠ±Ρ€Π°Ρ‚ΠΈΡ‚Π΅ Π²Π½ΠΈΠΌΠ°Π½ΠΈΠ΅ Π½Π° ΠΊΠΎΠ΄ Π²Ρ‹ΡˆΠ΅, Π΄Π²Π΅ ΠΏΠ΅Ρ€Π΅ΠΌΠ΅Π½Π½Ρ‹Π΅ Π·Π°ΠΊΠ»ΡŽΡ‡Π΅Π½Ρ‹ Π² ΠΊΡ€ΡƒΠ³Π»Ρ‹Π΅ скобки, Π² Ρ‚ΠΎ врСмя ΠΊΠ°ΠΊ Π² лямбдС, ΠΏΡ€ΠΈΠ½ΠΈΠΌΠ°ΡŽΡ‰Π΅ΠΉ Π΄Π²Π΅ ΠΏΠ΅Ρ€Π΅ΠΌΠ΅Π½Π½Ρ‹Π΅, скобок Π½Π΅Ρ‚.Β 

Если Π²Ρ‹ ΠΏΡ€ΠΈΡˆΠ»ΠΈ ΠΈΠ· Python, Π²Ρ‹ ΠΌΠΎΠΆΠ΅Ρ‚Π΅ Π·Π°Π΄Π°Ρ‚ΡŒΡΡ вопросом, ΠΌΠΎΠΆΠ΅Ρ‚Π΅ Π»ΠΈ Π²Ρ‹ Π΄Π΅ΡΡ‚Ρ€ΡƒΠΊΡ‚ΡƒΡ€ΠΈΡ€ΠΎΠ²Π°Ρ‚ΡŒ ΠΈΠ»ΠΈ Ρ€Π°ΡΠΏΠ°ΠΊΠΎΠ²Π°Ρ‚ΡŒ Π°Ρ€Π³ΡƒΠΌΠ΅Π½Ρ‚Ρ‹ ΠΏΡ€ΠΈ Π²Ρ‹Π·ΠΎΠ²Π΅ Ρ„ΡƒΠ½ΠΊΡ†ΠΈΠΈ, вмСсто Ρ‚ΠΎΠ³ΠΎ, Ρ‡Ρ‚ΠΎΠ±Ρ‹ Π΄Π΅Π»Π°Ρ‚ΡŒ это Π²Π½ΡƒΡ‚Ρ€ΠΈ Ρ„ΡƒΠ½ΠΊΡ†ΠΈΠΈ ΠΊΠ°ΠΊ здСсь:

lambdaCrypto(*Pair("Bitcoin", "BTC"))

Π’ Kotlin Π΅ΡΡ‚ΡŒ ΠΎΠΏΠ΅Ρ€Π°Ρ‚ΠΎΡ€ Spread. Однако ΠΎΠ½ Π½Π΅ Ρ‚Π°ΠΊΠΎΠΉ Π³ΠΈΠ±ΠΊΠΈΠΉ, ΠΊΠ°ΠΊ Π² Python. Из-Π·Π° этого Π²Ρ‹ ΠΏΠΎΠ»ΡƒΡ‡ΠΈΡ‚Π΅ ΠΎΡˆΠΈΠ±ΠΊΡƒ. Π’Ρ‹ ΠΌΠΎΠΆΠ΅Ρ‚Π΅ ΠΏΡ€ΠΈΠΌΠ΅Π½ΠΈΡ‚ΡŒ ΠΎΠΏΠ΅Ρ€Π°Ρ‚ΠΎΡ€ Spread Ρ‚ΠΎΠ»ΡŒΠΊΠΎ Π² ΠΏΠΎΠ·ΠΈΡ†ΠΈΠΈ vararg.

ΠŸΡ€ΠΎΠ±Π»Π΅ΠΌΠ° с дСструктуризациСй класса Π΄Π°Π½Π½Ρ‹Ρ…

Один ΠΈΠ· Π½Π°ΠΈΠ±ΠΎΠ»Π΅Π΅ распространСнных Ρ‚ΠΈΠΏΠΎΠ² Π΄Π°Π½Π½Ρ‹Ρ…, ΠΊΠΎΡ‚ΠΎΡ€Ρ‹ΠΉ Π²Ρ‹ Π±ΡƒΠ΄Π΅Ρ‚Π΅ ΠΈΠ·Π²Π»Π΅ΠΊΠ°Ρ‚ΡŒ с ΠΏΠΎΠΌΠΎΡ‰ΡŒΡŽ объявлСний дСструктуризации, - это класс Π΄Π°Π½Π½Ρ‹Ρ…. Однако Π²Ρ‹ Π΄ΠΎΠ»ΠΆΠ½Ρ‹ Π±Ρ‹Ρ‚ΡŒ остороТны, ΠΏΠΎΡ‚ΠΎΠΌΡƒ Ρ‡Ρ‚ΠΎ объявлСния дСструктуризации класса Π΄Π°Π½Π½Ρ‹Ρ… основаны Π½Π° позициях, Π° Π½Π΅ Π½Π° ΠΈΠΌΠ΅Π½Π°Ρ….

ΠŸΠΎΡΠΌΠΎΡ‚Ρ€ΠΈΡ‚Π΅ Π½Π° этот экзСмпляр класса Π΄Π°Π½Π½Ρ‹Ρ… ΠΈ ΠΏΡ€ΠΈΠΌΠ΅Ρ€ Π½Π΅ΠΏΡ€Π°Π²ΠΈΠ»ΡŒΠ½ΠΎΠ³ΠΎ использования объявлСний дСструктуризации:

data class Founder(var name: String, var cryptocurrency: String, var country: String)
val founder = Founder("Vitalik", "Ethereum", "Canada")
// val (cryptocurrency, name, country) = founder

cryptocurrency ΠΈΠΌΠ΅Π΅Ρ‚ Π·Π½Π°Ρ‡Π΅Π½ΠΈΠ΅ Vitalik, Π½Π΅Β  Ethereum.

Π§Ρ‚ΠΎΠ±Ρ‹ Π΄ΠΎΠΊΠ°Π·Π°Ρ‚ΡŒ, Ρ‡Ρ‚ΠΎ это Ρ‚Π°ΠΊ, раскоммСнтируйтС:

// val (cryptocurrency, name, country) = founder

Π—Π°Ρ‚Π΅ΠΌ Π΄ΠΎΠ±Π°Π²ΡŒΡ‚Π΅ println, Ρ‡Ρ‚ΠΎΠ±Ρ‹ вывСсти Π·Π½Π°Ρ‡Π΅Π½ΠΈΠ΅. Π‘Ρ‚Ρ€ΠΎΠΊΠ° Π±ΡƒΠ΄Π΅Ρ‚ Π²Ρ‹Π³Π»ΡΠ΄Π΅Ρ‚ΡŒ Ρ‚Π°ΠΊ:

val (cryptocurrency, name, country) = founder
println(cryptocurrency)

Π‘ΠΊΠΎΠΌΠΏΠΈΠ»ΠΈΡ€ΡƒΠΉΡ‚Π΅ ΠΈ запуститС.Β  И Π²Ρ‹ ΡƒΠ²ΠΈΠ΄ΠΈΡ‚Π΅ Π·Π½Π°Ρ‡Π΅Π½ΠΈΠ΅ cryptocurrency.

Как Π²ΠΈΠ΄ΠΈΡ‚Π΅, cryptocurrency Π΄Π΅ΠΉΡΡ‚Π²ΠΈΡ‚Π΅Π»ΡŒΠ½ΠΎ ΠΈΠΌΠ΅Π΅Ρ‚ Π·Π½Π°Ρ‡Π΅Π½ΠΈΠ΅ Vitalik.

Π§Ρ‚ΠΎΠ±Ρ‹ ΠΏΠΎΠ»ΡƒΡ‡Π°Ρ‚ΡŒ ΠΏΡ€Π°Π²ΠΈΠ»ΡŒΠ½Ρ‹Π΅ значСния, Π²Ρ‹ Π΄ΠΎΠ»ΠΆΠ½Ρ‹ ΠΏΠΎΠ½ΠΈΠΌΠ°Ρ‚ΡŒ, Ρ‡Ρ‚ΠΎ объявлСния дСструктуризации класса Π΄Π°Π½Π½Ρ‹Ρ… основаны Π½Π° ΠΏΠΎΠ·ΠΈΡ†ΠΈΠΎΠ½ΠΈΡ€ΠΎΠ²Π°Π½ΠΈΠΈ.

Π’Π΅ΠΏΠ΅Ρ€ΡŒ ΠΎΡ‚ΠΌΠ΅Π½ΠΈΡ‚Π΅ послСднСС ΠΈΠ·ΠΌΠ΅Π½Π΅Π½ΠΈΠ΅ ΠΈΠ»ΠΈ ΡƒΠ΄Π°Π»ΠΈΡ‚Π΅ строки, ΠΊΠΎΡ‚ΠΎΡ€Ρ‹Π΅ Π²Ρ‹ Π΄ΠΎΠ±Π°Π²ΠΈΠ»ΠΈ Ρ€Π°Π½Π΅Π΅. ИзмСнСнная Π²Π°ΠΌΠΈ строка Π±ΡƒΠ΄Π΅Ρ‚ Π²Ρ‹Π³Π»ΡΠ΄Π΅Ρ‚ΡŒ Ρ‚Π°ΠΊ:

// val (cryptocurrency, name, country) = founder

Π”Π°Π»Π΅Π΅ Π·Π°ΠΌΠ΅Π½ΠΈΡ‚Π΅Β  TODO 7Β Π½Π°:

val (name, cryptocurrency, country) = founder
println("$name, $cryptocurrency, $country")

Π‘ΠΊΠΎΠΌΠΏΠΈΠ»ΠΈΡ€ΡƒΠΉΡ‚Π΅ ΠΈ запуститС. Π’Ρ‹ ΡƒΠ²ΠΈΠ΄ΠΈΡ‚Π΅ значСния name, cryptocurrency ΠΈ country.

Β 

Π’Π΅ΠΏΠ΅Ρ€ΡŒ name, cryptocurrency ΠΈ country относятся ΠΊ ΠΏΡ€Π°Π²ΠΈΠ»ΡŒΠ½Ρ‹ΠΌ значСниям.

Если вас Ρ€Π°Π·Π΄Ρ€Π°ΠΆΠ°Π΅Ρ‚ Π½Π΅ Π±ΠΎΠ»Π΅Π΅ пяти элСмСнтов Π² объявлСнии дСструктуризации ΠΊΠΎΠ»Π»Π΅ΠΊΡ†ΠΈΠΈ, Ρ‚ΠΎ Ρƒ мСня для вас ΠΎΡ‚Π»ΠΈΡ‡Π½Ρ‹Π΅ новости! Π£ класса Π΄Π°Π½Π½Ρ‹Ρ… Π½Π΅Ρ‚ этого ограничСния.

Π”Π°ΠΆΠ΅ Ссли ваш класс Π΄Π°Π½Π½Ρ‹Ρ… состоит ΠΈΠ· Π΄Π²Π°Π΄Ρ†Π°Ρ‚ΠΈ ΠΊΠΎΠΌΠΏΠΎΠ½Π΅Π½Ρ‚ΠΎΠ², Π²Ρ‹ ΠΌΠΎΠΆΠ΅Ρ‚Π΅ ΠΈΠ·Π²Π»Π΅Ρ‡ΡŒ ΠΈΡ… всС с ΠΏΠΎΠΌΠΎΡ‰ΡŒΡŽ объявлСний дСструктуризации.

Однако Π²Ρ‹ Π½Π΅ ΠΌΠΎΠΆΠ΅Ρ‚Π΅ ΠΏΡ€Π΅Π΄ΠΎΡΡ‚Π°Π²ΠΈΡ‚ΡŒ ΡΠ²Π½ΡƒΡŽ Ρ€Π΅Π°Π»ΠΈΠ·Π°Ρ†ΠΈΡŽ для componentNΒ Π² классС Π΄Π°Π½Π½Ρ‹Ρ…. Π˜Ρ‚Π°ΠΊ, Ссли Π²Ρ‹ Ρ…ΠΎΡ‚ΠΈΡ‚Π΅ Ρ€Π°Π·Ρ‹Π³Ρ€Π°Ρ‚ΡŒ своих ΠΊΠΎΠ»Π»Π΅Π³, ΠΏΠ΅Ρ€Π΅ΠΎΠΏΡ€Π΅Π΄Π΅Π»ΠΈΠ² component2, Ρ‡Ρ‚ΠΎΠ±Ρ‹ Π²Π΅Ρ€Π½ΡƒΡ‚ΡŒ Ρ‚Ρ€Π΅Ρ‚ΠΈΠΉ элСмСнт, ΠΈ component3, Ρ‡Ρ‚ΠΎΠ±Ρ‹ Π²Π΅Ρ€Π½ΡƒΡ‚ΡŒ ΠΏΠ΅Ρ€Π²Ρ‹ΠΉ элСмСнт, Π²Ρ‹ ΠΌΠΎΠΆΠ΅Ρ‚Π΅ Π·Π°Π±Ρ‹Ρ‚ΡŒ ΠΎΠ± этом. К ΡΡ‡Π°ΡΡ‚ΡŒΡŽ, Π΄ΠΈΠ·Π°ΠΉΠ½Π΅Ρ€Ρ‹ Kotlin Π½Π°Π»ΠΎΠΆΠΈΠ»ΠΈ ограничСния, Ρ‡Ρ‚ΠΎΠ±Ρ‹ Π·Π°Ρ‰ΠΈΡ‚ΠΈΡ‚ΡŒ Π²Π°ΡˆΠΈΡ… ΠΊΠΎΠ»Π»Π΅Π³ ΠΎΡ‚ Π²Π°ΡˆΠΈΡ… ТСстоких ΡˆΡƒΡ‚ΠΎΡ‡Π΅ΠΊ. :]

Но Ρ‡Ρ‚ΠΎ, Ссли Π²Ρ‹ упорствуСтС Π² своих ΠΏΠΎΠΏΡ‹Ρ‚ΠΊΠ°Ρ… Ρ€Π°Π·Ρ‹Π³Ρ€Π°Ρ‚ΡŒ своих ΠΊΠΎΠ»Π»Π΅Π³? Π—Π΄Π΅ΡΡŒ Π²Π°ΠΌ ΠΏΠΎΠΌΠΎΠΆΠ΅Ρ‚ ΡΠΏΠ΅Ρ†ΠΈΠ°Π»ΡŒΠ½Ρ‹ΠΉ класс.

Π‘ΠΎΠ·Π΄Π°Π½ΠΈΠ΅ ΠΏΠΎΠ΄Π΄Π΅Ρ€ΠΆΠΊΠΈ объявлСний дСструктуризации для класса

Π§Ρ‚ΠΎ Ссли Π²Ρ‹ Ρ…ΠΎΡ‚ΠΈΡ‚Π΅ ΡΠΎΠ·Π΄Π°Ρ‚ΡŒ ΠΏΠΎΠ΄Π΄Π΅Ρ€ΠΆΠΊΡƒ объявлСний дСструктуризации Π±ΠΎΠ»Π΅Π΅ пяти элСмСнтов для класса? ВзглянитС Π½Π° ΠΎΠΏΡ€Π΅Π΄Π΅Π»Π΅Π½ΠΈΠ΅ Cryptocurrencies:

class Cryptocurrencies {
    operator fun component1() : String = "Bitcoin"
    operator fun component2() : String = "Ethereum"
    operator fun component3() : String = "Binance Coin"
    operator fun component4() : String = "Tether"
    operator fun component5() : String = "XRP"
    operator fun component6() : String = "Uniswap"
}

ΠŸΠΎΠΌΠ½ΠΈΡ‚Π΅ component5, ΠΊΠΎΡ‚ΠΎΡ€Ρ‹ΠΉ Π²Ρ‹ использовали для извлСчСния пятого элСмСнта ΠΈΠ· массива? Если Π²Ρ‹ Ρ…ΠΎΡ‚ΠΈΡ‚Π΅ ΠΈΠ·Π²Π»Π΅Ρ‡ΡŒ ΡˆΠ΅ΡΡ‚ΠΎΠΉ элСмСнт ΠΈΠ· класса, ΠΎΠΏΡ€Π΅Π΄Π΅Π»ΠΈΡ‚Π΅ component6.

ΠœΠ΅Ρ‚ΠΎΠ΄ Π΄ΠΎΠ»ΠΆΠ΅Π½ Π±Ρ‹Ρ‚ΡŒ ΠΎΠΏΠ΅Ρ€Π°Ρ‚ΠΎΡ€Π½Ρ‹ΠΌ. Если Π²Ρ‹ Ρ…ΠΎΡ‚ΠΈΡ‚Π΅ ΠΈΠ·Π²Π»Π΅Ρ‡ΡŒ Π΄Π²Π°Π΄Ρ†Π°Ρ‚ΡŒ элСмСнтов ΠΈΠ· класса, Π²Π°ΠΌ Π½ΡƒΠΆΠ½ΠΎ ΠΎΠΏΡ€Π΅Π΄Π΅Π»ΠΈΡ‚ΡŒ ΠΈΡ… ΠΎΡ‚ component1 Π΄ΠΎ component20.

Π—Π°ΠΌΠ΅Π½ΠΈΡ‚Π΅ TODO 8Β Β Π½Π°:

val (bitcoin, ethereum, binanceCoin, tether, xrp, uniswap) = Cryptocurrencies()
println("$bitcoin, $ethereum, $binanceCoin, $tether, $xrp, $uniswap")

Π‘ΠΊΠΎΠΌΠΏΠΈΠ»ΠΈΡ€ΡƒΠΉΡ‚Π΅ ΠΈ запуститС.Β 

Как Π²ΠΈΠ΄ΠΈΡ‚Π΅, Π²Ρ‹ ΠΈΠ·Π²Π»Π΅ΠΊΠ»ΠΈ ΡˆΠ΅ΡΡ‚ΡŒ элСмСнтов ΠΈΠ· экзСмпляра класса.

ΠŸΠΎΠΌΠ½ΠΈΡ‚Π΅, Π²Ρ‹ Ρ…ΠΎΡ‚Π΅Π»ΠΈ Ρ€Π°Π·Ρ‹Π³Ρ€Π°Ρ‚ΡŒ своих ΠΊΠΎΠ»Π»Π΅Π³? Π’Ρ‹ ΠΌΠΎΠΆΠ΅Ρ‚Π΅ ΠΏΠ΅Ρ€Π΅ΠΎΠΏΡ€Π΅Π΄Π΅Π»ΠΈΡ‚ΡŒ component3, Ρ‡Ρ‚ΠΎΠ±Ρ‹ Π²Π΅Ρ€Π½ΡƒΡ‚ΡŒ Ρ‡Ρ‚ΠΎ-Ρ‚ΠΎ Ρ€Π°Π·Π΄Ρ€Π°ΠΆΠ°ΡŽΡ‰Π΅Π΅. НапримСр, Π²Ρ‹ ΠΌΠΎΠΆΠ΅Ρ‚Π΅ ΡΠ΄Π΅Π»Π°Ρ‚ΡŒ Ρ‡Ρ‚ΠΎ-Ρ‚ΠΎ Π²Ρ€ΠΎΠ΄Π΅ этого:

//operator fun component3() : String = "Binance Coin"
  operator fun component3() : String {
      val current = LocalDateTime.now()
      if (current.monthValue % 2 == 0) {
          return "Binance Coin"
      } else {
          return "Doge"
      }
  }

Если ваши ΠΊΠΎΠ»Π»Π΅Π³ΠΈ ΠΈΡΠΏΠΎΠ»ΡŒΠ·ΡƒΡŽΡ‚ этот класс, ΠΎΠ½ΠΈ ΠΏΠΎΠ»ΡƒΡ‡Π°Ρ‚ Ρ€Π°Π·Π½Ρ‹Π΅ Π΄Π°Π½Π½Ρ‹Π΅ ΠΏΡ€ΠΈ ΠΈΠ·Π²Π»Π΅Ρ‡Π΅Π½ΠΈΠΈ component3 Π² зависимости ΠΎΡ‚ Ρ‚ΠΎΠ³ΠΎ, Ρ‡Π΅Ρ‚Π½Ρ‹ΠΉ ΠΈΠ»ΠΈ Π½Π΅Ρ‡Π΅Ρ‚Π½Ρ‹ΠΉ Ρ‚Π΅ΠΊΡƒΡ‰ΠΈΠΉ мСсяц. НС Π·Π°Π±ΡƒΠ΄ΡŒΡ‚Π΅ сначала ΠΈΠΌΠΏΠΎΡ€Ρ‚ΠΈΡ€ΠΎΠ²Π°Ρ‚ΡŒ java.time.LocalDateTime, Ссли Π²Ρ‹ Π΄Π΅ΠΉΡΡ‚Π²ΠΈΡ‚Π΅Π»ΡŒΠ½ΠΎ ΡΠΎΠ±Ρ€Π°Π»ΠΈΡΡŒ ΠΈΡ… Ρ€Π°Π·Ρ‹Π³Ρ€Π°Ρ‚ΡŒ.Β 

Π’ этом ΡƒΡ€ΠΎΠΊΠ΅ Π²Ρ‹ ΡƒΠ·Π½Π°Π»ΠΈ:

  • Π§Ρ‚ΠΎ Ρ‚Π°ΠΊΠΎΠ΅ объявлСния дСструктуризации ΠΈ ΠΊΠ°ΠΊ ΠΈΡ… ΠΈΡΠΏΠΎΠ»ΡŒΠ·ΠΎΠ²Π°Ρ‚ΡŒ.
  • Как ΠΈΡΠΏΠΎΠ»ΡŒΠ·ΠΎΠ²Π°Ρ‚ΡŒ объявлСния дСструктуризации Π² коллСкциях: ΠŸΠ°Ρ€Ρ‹, ΠœΠ°ΡΡΠΈΠ²Ρ‹ ΠΈ ΠšΠ°Ρ€Ρ‚Ρ‹.
  • ОбъявлСния дСструктуризации Π² лямбда-функциях.
  • ИспользованиС объявлСний дСструктуризации Π² классах Π΄Π°Π½Π½Ρ‹Ρ… ΠΈ ΡΠΏΠ΅Ρ†ΠΈΠ°Π»ΡŒΠ½Ρ‹Ρ… классах.

Π­Ρ‚ΠΎΡ‚ ΠΏΡ€ΠΎΠ΅ΠΊΡ‚ - Ρ‚ΠΎΠ»ΡŒΠΊΠΎ Π½Π°Ρ‡Π°Π»ΠΎ: Π΅ΡΡ‚ΡŒ Π΅Ρ‰Π΅ ΠΌΠ½ΠΎΠ³ΠΎ Ρ‡Ρ‚ΠΎ ΠΈΡΡΠ»Π΅Π΄ΠΎΠ²Π°Ρ‚ΡŒ. ΠŸΠΎΡ‡Π΅ΠΌΡƒ Π±Ρ‹ Π½Π΅ Π΄ΠΎΠ±Π°Π²ΠΈΡ‚ΡŒ ΠΏΠΎΠ΄Π΄Π΅Ρ€ΠΆΠΊΡƒ объявлСния дСструктуризации Π±ΠΎΠ»Π΅Π΅ пяти элСмСнтов массива ΠΈΠ»ΠΈ списка? Π‘Π΄Π΅Π»Π°Ρ‚ΡŒ это ΠΌΠΎΠΆΠ½ΠΎ, написав ΠΎΠΏΠ΅Ρ€Π°Ρ‚ΠΎΡ€Π½Ρ‹Π΅ ΠΌΠ΅Ρ‚ΠΎΠ΄Ρ‹.

ΠžΡ€ΠΈΠ³ΠΈΠ½Π°Π» ΡΡ‚Π°Ρ‚ΡŒΠΈ


ΠžΡ†Π΅Π½ΠΈΡ‚Π΅ ΡΡ‚Π°Ρ‚ΡŒΡŽ
0
0
0
0
0

Π§Ρ‚ΠΎΠ±Ρ‹ Π΄ΠΎΠ±Π°Π²ΠΈΡ‚ΡŒ ΠΊΠΎΠΌΠΌΠ΅Π½Ρ‚Π°Ρ€ΠΈΠΉ, Π°Π²Ρ‚ΠΎΡ€ΠΈΠ·ΡƒΠΉΡ‚Π΅ΡΡŒ
Π’ΠΎΠΉΡ‚ΠΈ
Акулов Иван Борисович
ΠŸΠΈΡˆΠ΅Ρ‚ ΠΈ ΠΏΠ΅Ρ€Π΅Π²ΠΎΠ΄ΠΈΡ‚ ΡΡ‚Π°Ρ‚ΡŒΠΈ для SwiftBook