ΠΊΠ°ΠΊΠ°Ρ ΡΠ°Π·Π½ΠΈΡΠ° ΠΌΠ΅ΠΆΠ΄Ρ ΡΡΡΡΠΊΡΡΡΠΎΠΉ ΠΈ ΠΊΠ»Π°ΡΡΠΎΠΌ
Π‘ΡΡΡΠΊΡΡΡΡ ΠΏΡΠΎΡΠΈΠ² ΠΠ»Π°ΡΡΠΎΠ²
Π‘ ΡΠ°ΠΌΠΎΠ³ΠΎ Π½Π°ΡΠ°Π»Π°, ΠΊΠΎΠ³Π΄Π° Ρ Π½Π°ΡΠΈΠ½Π°Π» Π·Π°Π½ΠΈΠΌΠ°ΡΡΡΡ ΠΏΡΠΎΠ³ΡΠ°ΠΌΠΌΠΈΡΠΎΠ²Π°Π½ΠΈΠ΅ΠΌ, Π²ΡΡΠ°Π²Π°Π» Π²ΠΎΠΏΡΠΎΡ, ΡΡΠΎ ΠΈΡΠΏΠΎΠ»ΡΠ·ΠΎΠ²Π°ΡΡ Π΄Π»Ρ ΡΠ»ΡΡΡΠ΅Π½ΠΈΡ Π±ΡΡΡΡΠΎΠ΄Π΅ΠΉΡΡΠ²ΠΈΡ: ΡΡΡΡΠΊΡΡΡΡ ΠΈΠ»ΠΈ ΠΊΠ»Π°ΡΡ; ΠΊΠ°ΠΊΠΈΠ΅ ΠΌΠ°ΡΡΠΈΠ²Ρ Π»ΡΡΡΠ΅ ΠΈΡΠΏΠΎΠ»ΡΠ·ΠΎΠ²Π°ΡΡ ΠΈ ΠΊΠ°ΠΊ. ΠΠΎ ΠΏΠΎΠ²ΠΎΠ΄Ρ ΡΡΡΡΠΊΡΡΡ, Apple ΠΏΡΠΈΠ²Π΅ΡΡΡΠ²ΡΠ΅Ρ ΠΈΡ ΠΈΡΠΏΠΎΠ»ΡΠ·ΠΎΠ²Π°Π½ΠΈΠ΅, ΠΎΠ±ΡΡΡΠ½ΡΡ ΡΡΠΎ ΡΠ΅ΠΌ, ΡΡΠΎ ΠΎΠ½ΠΈ Π»ΡΡΡΠ΅ ΠΏΠΎΠ΄Π΄Π°ΡΡΡΡ ΠΎΠΏΡΠΈΠΌΠΈΠ·Π°ΡΠΈΠΈ, ΠΈ Π²ΡΡ ΡΡΡΡ ΡΠ·ΡΠΊΠ° Swift β ΡΡΠΎ ΡΡΡΡΠΊΡΡΡΡ. ΠΠΎ Π΅ΡΡΡ ΠΈ ΡΠ΅, ΠΊΡΠΎ Ρ ΡΡΠΈΠΌ Π½Π΅ ΡΠΎΠ³Π»Π°ΡΠ΅Π½, Π²Π΅Π΄Ρ ΠΌΠΎΠΆΠ½ΠΎ ΠΊΡΠ°ΡΠΈΠ²ΠΎ ΡΠΏΡΠΎΡΡΠΈΡΡ ΠΊΠΎΠ΄, ΠΎΡΠ½Π°ΡΠ»Π΅Π΄ΠΎΠ²Π°Π² ΠΎΠ΄ΠΈΠ½ ΠΊΠ»Π°ΡΡ ΠΎΡ Π΄ΡΡΠ³ΠΎΠ³ΠΎ ΠΈ ΡΠ°Π±ΠΎΡΠ°Ρ Ρ ΡΠ°ΠΊΠΈΠΌ ΠΊΠ»Π°ΡΡΠΎΠΌ. ΠΠ»Ρ ΡΡΠΊΠΎΡΠ΅Π½ΠΈΡ ΡΠ°Π±ΠΎΡΡ Ρ ΠΊΠ»Π°ΡΡΠ°ΠΌΠΈ ΡΠΎΠ·Π΄Π°Π²Π°Π»ΠΈ ΡΠ°Π·Π½ΡΠ΅ ΠΌΠΎΠ΄ΠΈΡΠΈΠΊΠ°ΡΠΎΡΡ ΠΈ ΠΎΠ±ΡΠ΅ΠΊΡΡ, ΠΊΠΎΡΠΎΡΡΠ΅ ΠΎΠΏΡΠΈΠΌΠΈΠ·ΠΈΡΠΎΠ²Π°Π»ΠΈΡΡ ΡΠΏΠ΅ΡΠΈΠ°Π»ΡΠ½ΠΎ ΠΏΠΎΠ΄ ΠΊΠ»Π°ΡΡΡ, ΠΈ ΡΡΡ ΡΠΆΠ΅ ΡΠ»ΠΎΠΆΠ½ΠΎ ΡΠΊΠ°Π·Π°ΡΡ, ΡΡΠΎ ΠΈ Π² ΠΊΠ°ΠΊΠΎΠΌ ΡΠ»ΡΡΠ°Π΅ Π±ΡΠ΄Π΅Ρ Π±ΡΡΡΡΠ΅Π΅.
ΠΠ»Ρ ΡΠ°ΡΡΡΠ°Π½ΠΎΠ²ΠΊΠΈ Π²ΡΠ΅Ρ ΡΠΎΡΠ΅ΠΊ Π½Π° βΠ΅β Ρ Π½Π°ΠΏΠΈΡΠ°Π» Π½Π΅ΡΠΊΠΎΠ»ΡΠΊΠΎ ΡΠ΅ΡΡΠΎΠ², ΠΊΠΎΡΠΎΡΡΠ΅ ΠΈΡΠΏΠΎΠ»ΡΠ·ΡΡΡ ΠΎΠ±ΡΡΠ½ΡΠ΅ ΠΏΠΎΠ΄Ρ ΠΎΠ΄Ρ ΠΊ ΠΎΠ±ΡΠ°Π±ΠΎΡΠΊΠ΅ Π΄Π°Π½Π½ΡΡ : ΠΏΠ΅ΡΠ΅Π΄Π°ΡΠ° Π² ΠΌΠ΅ΡΠΎΠ΄, ΠΊΠΎΠΏΠΈΡΠΎΠ²Π°Π½ΠΈΠ΅, ΡΠ°Π±ΠΎΡΠ° Ρ ΠΌΠ°ΡΡΠΈΠ²Π°ΠΌΠΈ ΠΈ ΡΠ°ΠΊ Π΄Π°Π»Π΅Π΅. ΠΡΠΎΠΌΠΊΠΈΡ Π²ΡΠ²ΠΎΠ΄ΠΎΠ² Ρ ΡΠ΅ΡΠΈΠ» Π½Π΅ Π΄Π΅Π»Π°ΡΡ, ΠΊΠ°ΠΆΠ΄ΡΠΉ ΡΠ΅ΡΠΈΡ Π΄Π»Ρ ΡΠ΅Π±Ρ ΡΠ°ΠΌ, ΡΡΠΎΠΈΡ Π»ΠΈ Π²Π΅ΡΠΈΡΡ ΡΠ΅ΡΡΠ°ΠΌ, ΡΠΌΠΎΠΆΠ΅Ρ ΡΠΊΠ°ΡΠ°ΡΡ ΠΏΡΠΎΠ΅ΠΊΡ ΠΈ ΠΏΠΎΡΠΌΠΎΡΡΠ΅ΡΡ, ΠΊΠ°ΠΊ ΠΎΠ½ Π±ΡΠ΄Π΅Ρ ΡΠ°Π±ΠΎΡΠ°ΡΡ Ρ Π²Π°Ρ, ΠΈ ΠΏΠΎΠΏΡΠΎΠ±ΠΎΠ²Π°ΡΡ ΠΎΠΏΡΠΈΠΌΠΈΠ·ΠΈΡΠΎΠ²Π°ΡΡ ΡΠ°Π±ΠΎΡΡ ΡΠΎΠ³ΠΎ ΠΈΠ»ΠΈ ΠΈΠ½ΠΎΠ³ΠΎ ΡΠ΅ΡΡΠ°. ΠΠΎΠ·ΠΌΠΎΠΆΠ½ΠΎ Π΄Π°ΠΆΠ΅ Π²ΡΠΉΠ΄ΡΡ Π½ΠΎΠ²ΡΠ΅ ΡΠΈΡΠΊΠΈ, ΠΊΠΎΡΠΎΡΡΠ΅ Ρ Π½Π΅ ΡΠΏΠΎΠΌΡΠ½ΡΠ», ΠΈΠ»ΠΈ ΠΎΠ½ΠΈ Π½Π°ΡΡΠΎΠ»ΡΠΊΠΎ ΡΠ΅Π΄ΠΊΠΎ ΠΈΡΠΏΠΎΠ»ΡΠ·ΡΡΡΡΡ, ΡΡΠΎ Ρ ΠΏΡΠΎΡΡΠΎ Π½Π΅ ΡΠ»ΡΡΠ°Π» ΠΎ Π½ΠΈΡ .
P.S. Π― Π½Π°ΡΠΈΠ½Π°Π» ΡΠ°Π±ΠΎΡΡ Π½Π°Π΄ ΡΡΠ°ΡΡΡΠΉ Π½Π° Xcode 10.3 ΠΈ Π±ΡΠ»ΠΎ Π΄ΡΠΌΠ°Π» ΠΏΠΎΠΏΡΠΎΠ±ΠΎΠ²Π°ΡΡ ΡΡΠ°Π²Π½ΠΈΡΡ Π΅Π³ΠΎ ΡΠΊΠΎΡΠΎΡΡΡ Ρ Xcode 11, Π½ΠΎ Π²ΡΡ ΠΆΠ΅ ΡΡΠ°ΡΡΡ Π½Π΅ ΠΏΡΠΎ ΡΡΠ°Π²Π½Π΅Π½ΠΈΠ΅ Π΄Π²ΡΡ ΠΏΡΠΈΠ»ΠΎΠΆΠ΅Π½ΠΈΠΉ, Π° ΠΎ ΡΠΊΠΎΡΠΎΡΡΠΈ ΡΠ°Π±ΠΎΡΡ Π½Π°ΡΠΈΡ ΠΏΡΠΈΠ»ΠΎΠΆΠ΅Π½ΠΈΠΉ. Π― Π½Π΅ ΡΠΎΠΌΠ½Π΅Π²Π°ΡΡΡ, ΡΡΠΎ Π²ΡΠ΅ΠΌΡ ΡΠ°Π±ΠΎΡΡ ΡΡΠ½ΠΊΡΠΈΠΉ ΡΠΌΠ΅Π½ΡΡΠΈΡΡΡ, ΠΈ ΡΠΎ, ΡΡΠΎ Π±ΡΠ»ΠΎ ΠΏΠ»ΠΎΡ ΠΎ ΠΎΠΏΡΠΈΠΌΠΈΠ·ΠΈΡΠΎΠ²Π°Π½ΠΎ, ΡΡΠ°Π½Π΅Ρ Π±ΡΡΡΡΠ΅Π΅. Π ΠΈΡΠΎΠ³Π΅ Ρ Π΄ΠΎΠΆΠ΄Π°Π»ΡΡ Π½ΠΎΠ²ΡΠΉ Swift 5.1 ΠΈ ΡΠ΅ΡΠΈΠ» ΠΏΡΠΎΠ²Π΅ΡΠΈΡΡ Π³ΠΈΠΏΠΎΡΠ΅Π·Ρ Π½Π° ΠΏΡΠ°ΠΊΡΠΈΠΊΠ΅. ΠΡΠΈΡΡΠ½ΠΎΠ³ΠΎ ΡΡΠ΅Π½ΠΈΡ.
Π’Π΅ΡΡ 1: Π‘ΡΠ°Π²Π½ΠΈΠΌ ΠΌΠ°ΡΡΠΈΠ²Ρ Π½Π° ΡΡΡΡΠΊΡΡΡΠ°Ρ ΠΈ ΠΊΠ»Π°ΡΡΠ°Ρ
ΠΡΠ΅Π΄ΠΏΠΎΠ»ΠΎΠΆΠΈΠΌ, Ρ Π½Π°Ρ Π΅ΡΡΡ Π½Π΅ΠΊΠΈΠΉ ΠΊΠ»Π°ΡΡ, ΠΈ ΠΌΡ Ρ ΠΎΡΠΈΠΌ ΠΏΠΎΠ»ΠΎΠΆΠΈΡΡ ΠΎΠ±ΡΠ΅ΠΊΡΡ ΡΡΠΎΠ³ΠΎ ΠΊΠ»Π°ΡΡΠ° Π² ΠΌΠ°ΡΡΠΈΠ², ΠΎΠ±ΡΡΠ½ΠΎΠ΅ Π΄Π΅ΠΉΡΡΠ²ΠΈΠ΅ Π½Π°Π΄ ΠΌΠ°ΡΡΠΈΠ²ΠΎΠΌ β ΡΡΠΎ ΠΏΡΠΎΠΉΡΠΈΡΡ ΠΏΠΎ Π½Π΅ΠΌΡ ΡΠΈΠΊΠ»ΠΎΠΌ.
Π ΠΌΠ°ΡΡΠΈΠ²Π΅ ΠΏΡΠΈ ΠΈΡΠΏΠΎΠ»ΡΠ·ΠΎΠ²Π°Π½ΠΈΠΈ Π² Π½ΡΠΌ ΠΊΠ»Π°ΡΡΠΎΠ² ΠΈ ΠΏΠΎΠΏΡΡΠΊΠ΅ ΠΏΠΎ Π½Π΅ΠΌΡ ΠΏΡΠΎΠΉΡΠΈΡΡ ΡΠ²Π΅Π»ΠΈΡΠΈΠ²Π°Π΅ΡΡΡ ΠΊΠΎΠ»ΠΈΡΠ΅ΡΡΠ²ΠΎ ΡΡΡΠ»ΠΎΠΊ, ΠΏΠΎΡΠ»Π΅ Π·Π°Π²Π΅ΡΡΠ΅Π½ΠΈΡ ΡΠΈΡΠ»ΠΎ ΡΡΡΠ»ΠΎΠΊ Π½Π° ΠΎΠ±ΡΠ΅ΠΊΡ Π±ΡΠ΄Π΅Ρ ΡΠΌΠ΅Π½ΡΡΠ°ΡΡΡΡ.
ΠΡΠ»ΠΈ ΠΌΡ ΠΏΡΠΎΠΉΠ΄Π΅ΠΌΡΡ ΠΏΠΎ ΡΡΡΡΠΊΡΡΡΠ΅, ΡΠΎ Π² ΠΌΠΎΠΌΠ΅Π½Ρ Π²ΡΠ·ΠΎΠ²Π° ΠΎΠ±ΡΠ΅ΠΊΡΠ° ΠΏΠΎ ΠΈΠ½Π΄Π΅ΠΊΡΡ ΡΠΎΠ·Π΄Π°ΡΡΡΡ ΠΊΠΎΠΏΠΈΡ ΠΎΠ±ΡΠ΅ΠΊΡΠ°, ΡΠΌΠΎΡΡΡΡΠ°Ρ Π½Π° ΡΡ ΠΆΠ΅ ΠΎΠ±Π»Π°ΡΡΡ ΠΏΠ°ΠΌΡΡΠΈ, Π½ΠΎ ΠΏΠΎΠΌΠ΅ΡΠ΅Π½Π½Π°Ρ immutable. Π‘Π»ΠΎΠΆΠ½ΠΎ ΡΠΊΠ°Π·Π°ΡΡ, ΡΡΠΎ Π±ΡΡΡΡΠ΅Π΅: ΡΠ²Π΅Π»ΠΈΡΠ΅Π½ΠΈΠ΅ ΡΠΈΡΠ»Π° ΡΡΡΠ»ΠΎΠΊ Π½Π° ΠΎΠ±ΡΠ΅ΠΊΡ ΠΈΠ»ΠΈ ΡΠΎΠ·Π΄Π°Π½ΠΈΠ΅ ΡΡΡΠ»ΠΊΠΈ Π½Π° ΠΎΠ±Π»Π°ΡΡΡ Π² ΠΏΠ°ΠΌΡΡΠΈ Ρ ΠΎΡΡΡΡΡΡΠ²ΠΈΠ΅ΠΌ Π²ΠΎΠ·ΠΌΠΎΠΆΠ½ΠΎΡΡΠΈ Π΅Ρ ΠΈΠ·ΠΌΠ΅Π½ΠΈΡΡ. ΠΡΠΎΠ²Π΅ΡΠΈΠΌ ΡΡΠΎ Π½Π° ΠΏΡΠ°ΠΊΡΠΈΠΊΠ΅:
Π ΠΈΡ. 1: Π‘ΡΠ°Π²Π½Π΅Π½ΠΈΠ΅ ΠΏΠΎΠ»ΡΡΠ΅Π½ΠΈΡ ΠΏΠ΅ΡΠ΅ΠΌΠ΅Π½Π½ΠΎΠΉ ΠΈΠ· ΠΌΠ°ΡΡΠΈΠ²ΠΎΠ² Π½Π° ΠΎΡΠ½ΠΎΠ²Π΅ ΡΡΡΡΠΊΡΡΡ ΠΈ ΠΊΠ»Π°ΡΡΠΎΠ²
Π’Π΅ΡΡ 2. Π‘ΡΠ°Π²Π½Π΅Π½ΠΈΠΌ ContiguousArray vs Array
Π§ΡΠΎ Π±ΠΎΠ»Π΅Π΅ ΠΈΠ½ΡΠ΅ΡΠ΅ΡΠ½ΠΎ β ΡΡΠ°Π²Π½ΠΈΡΡ ΠΏΡΠΎΠΈΠ·Π²ΠΎΠ΄ΠΈΡΠ΅Π»ΡΠ½ΠΎΡΡΡ ΠΌΠ°ΡΡΠΈΠ²Π° (Array) Ρ ΡΡΡΠ»ΠΎΡΠ½ΡΠΌ ΠΌΠ°ΡΡΠΈΠ²ΠΎΠΌ (ContiguousArray), ΠΊΠΎΡΠΎΡΡΠΉ Π½ΡΠΆΠ΅Π½ ΡΠΏΠ΅ΡΠΈΠ°Π»ΡΠ½ΠΎ Π΄Π»Ρ ΡΠ°Π±ΠΎΡΡ c ΠΊΠ»Π°ΡΡΠ°ΠΌΠΈ, Ρ ΡΠ°Π½ΠΈΠΌΡΠΌΠΈ Π² ΠΌΠ°ΡΡΠΈΠ²Π΅.
ΠΡΠΎΠ²Π΅ΡΠΈΠΌ ΠΏΡΠΎΠΈΠ·Π²ΠΎΠ΄ΠΈΡΠ΅Π»ΡΠ½ΠΎΡΡΡ Π΄Π»Ρ ΡΠ»Π΅Π΄ΡΡΡΠΈΡ ΡΠ»ΡΡΠ°Π΅Π²:
ContiguousArray, Ρ
ΡΠ°Π½ΡΡΠΈΠΉ struct Ρ value ΡΠΈΠΏΠΎΠΌ
ContiguousArray, Ρ
ΡΠ°Π½ΡΡΠΈΠΉ struct Ρ String
ContiguousArray, Ρ
ΡΠ°Π½ΡΡΠΈΠΉ class Ρ value ΡΠΈΠΏΠΎΠΌ
ContiguousArray, Ρ
ΡΠ°Π½ΡΡΠΈΠΉ class Ρ String
Array, Ρ
ΡΠ°Π½ΡΡΠΈΠΉ struct Ρ value ΡΠΈΠΏΠΎΠΌ
Array, Ρ
ΡΠ°Π½ΡΡΠΈΠΉ struct Ρ String
Array, Ρ
ΡΠ°Π½ΡΡΠΈΠΉ class Ρ value ΡΠΈΠΏΠΎΠΌ
Array, Ρ
ΡΠ°Π½ΡΡΠΈΠΉ class Ρ String
Π’Π°ΠΊ ΠΊΠ°ΠΊ ΡΠ΅Π·ΡΠ»ΡΡΠ°ΡΡ ΡΠ΅ΡΡΠΎΠ² (ΡΠ΅ΡΡΡ: ΠΏΠ΅ΡΠ΅Π΄Π°ΡΠ° Π² ΡΡΠ½ΠΊΡΠΈΡ Ρ ΠΎΡΠΊΠ»ΡΡΠ΅Π½Π½ΠΎΠΉ ΠΎΠΏΡΠΈΠΌΠΈΠ·Π°ΡΠΈΠ΅ΠΉ inline, ΠΏΠ΅ΡΠ΅Π΄Π°ΡΠ° Π² ΡΡΠ½ΠΊΡΠΈΡ c Π²ΠΊΠ»ΡΡΠ΅Π½Π½ΠΎΠΉ ΠΎΠΏΡΠΈΠΌΠΈΠ·Π°ΡΠΈΠ΅ΠΉ inline, ΡΠ΄Π°Π»Π΅Π½ΠΈΠ΅ ΡΠ»Π΅ΠΌΠ΅Π½ΡΠΎΠ², Π΄ΠΎΠ±Π°Π²Π»Π΅Π½ΠΈΠ΅ ΡΠ»Π΅ΠΌΠ΅Π½ΡΠΎΠ², ΠΏΠΎΡΠ»Π΅Π΄ΠΎΠ²Π°ΡΠ΅Π»ΡΠ½ΡΠΉ Π΄ΠΎΡΡΡΠΏ ΠΊ ΡΠ»Π΅ΠΌΠ΅Π½ΡΡ Π² ΡΠΈΠΊΠ»Π΅) Π±ΡΠ΄ΡΡ Π²ΠΊΠ»ΡΡΠ°ΡΡ Π±ΠΎΠ»ΡΡΠΎΠ΅ ΠΊΠΎΠ»ΠΈΡΠ΅ΡΡΠ²ΠΎ ΠΏΡΠΎΠ²Π΅Π΄Π΅Π½Π½ΡΡ ΡΠ΅ΡΡΠΎΠ² (Π΄Π»Ρ 8 ΠΌΠ°ΡΡΠΈΠ²ΠΎΠ² ΠΏΠΎ 5 ΡΠ΅ΡΡΠΎΠ²), Ρ ΠΏΡΠΈΠ²Π΅Π΄Ρ Π½Π°ΠΈΠ±ΠΎΠ»Π΅Π΅ Π·Π½Π°ΡΠΈΠΌΡΠ΅ ΡΠ΅Π·ΡΠ»ΡΡΠ°ΡΡ:
ΠΠΏΡΠΈΠΌΠΈΠ·Π°ΡΠΈΠ΅ΠΉ ΡΠΈΠΊΠ»ΠΎΠ² Π΄Π»Ρ ΠΌΠ°ΡΡΠΈΠ²ΠΎΠ² ΡΠ»ΡΠΆΠΈΡ lazy ΠΈΠ½ΠΈΡΠΈΠ°Π»ΠΈΠ·Π°ΡΠΎΡ ΠΊΠΎΠ»Π»Π΅ΠΊΡΠΈΠΉ, ΠΊΠΎΡΠΎΡΡΠΉ ΠΏΠΎΠ·Π²ΠΎΠ»ΡΠ΅Ρ ΠΏΡΠΎΠΉΡΠΈΡΡ Π»ΠΈΡΡ ΠΎΠ΄ΠΈΠ½ ΡΠ°Π· ΠΏΠΎ Π²ΡΠ΅ΠΌΡ ΠΌΠ°ΡΡΠΈΠ²Ρ, Π΄Π°ΠΆΠ΅ Π² ΡΠΎΠΌ ΡΠ»ΡΡΠ°Π΅, Π΅ΡΠ»ΠΈ ΠΈΡΠΏΠΎΠ»ΡΠ·ΡΠ΅ΡΡΡ Π½Π΅ΡΠΊΠΎΠ»ΡΠΊΠΎ ΡΠΈΠ»ΡΡΡΠΎΠ² ΠΈΠ»ΠΈ ΠΌΠ°ΠΏΠΎΠ² Π½Π°Π΄ ΡΠ»Π΅ΠΌΠ΅Π½ΡΠ°ΠΌΠΈ ΠΌΠ°ΡΡΠΈΠ²Π°.
Π ΠΈΡΠΏΠΎΠ»ΡΠ·ΠΎΠ²Π°Π½ΠΈΠΈ ΡΡΡΡΠΊΡΡΡ Π² ΠΊΠ°ΡΠ΅ΡΡΠ²Π΅ ΠΈΠ½ΡΡΡΡΠΌΠ΅Π½ΡΠ° ΠΎΠΏΡΠΈΠΌΠΈΠ·Π°ΡΠΈΠΈ ΠΏΡΠΈΡΡΡΡΡΠ²ΡΡΡ ΡΠ²ΠΎΠΈ ΠΏΠΎΠ΄Π²ΠΎΠ΄Π½ΡΠ΅ ΠΊΠ°ΠΌΠ½ΠΈ, ΡΠ°ΠΊΠΈΠ΅ ΠΊΠ°ΠΊ ΠΈΡΠΏΠΎΠ»ΡΠ·ΠΎΠ²Π°Π½ΠΈΠ΅ ΡΠΈΠΏΠΎΠ², ΠΊΠΎΡΠΎΡΡΠ΅ Π²Π½ΡΡΡΠΈ ΠΈΠΌΠ΅ΡΡ ΡΡΡΠ»ΠΎΡΠ½ΡΡ ΠΏΡΠΈΡΠΎΠ΄Ρ: ΡΡΡΠΎΠΊΠΈ, ΡΠ»ΠΎΠ²Π°ΡΠΈ, ΡΡΡΠ»ΠΎΡΠ½ΡΠΉ ΠΌΠ°ΡΡΠΈΠ²Ρ. Π’ΠΎΠ³Π΄Π°, ΠΊΠΎΠ³Π΄Π° ΠΏΠ΅ΡΠ΅ΠΌΠ΅Π½Π½Π°Ρ, Ρ ΡΠ°Π½ΡΡΠ°Ρ Π² ΡΠ΅Π±Π΅ ΡΡΡΠ»ΠΎΡΠ½ΡΠΉ ΡΠΈΠΏ, ΠΏΠΎΡΡΡΠΏΠ°Π΅Ρ Π½Π° Π²Ρ ΠΎΠ΄ Ρ ΠΊΠ°ΠΊΠΎΠΉ-Π»ΠΈΠ±ΠΎ ΡΡΠ½ΠΊΡΠΈΠΈ, ΠΏΡΠΎΠΈΡΡ ΠΎΠ΄ΠΈΡ ΡΠΎΠ·Π΄Π°Π½ΠΈΠ΅ Π΄ΠΎΠΏΠΎΠ»Π½ΠΈΡΠ΅Π»ΡΠ½ΠΎΠΉ ΡΡΡΠ»ΠΊΠΈ Π½Π° ΠΊΠ°ΠΆΠ΄ΡΠΉ ΡΠ»Π΅ΠΌΠ΅Π½Ρ, ΠΊΠΎΡΠΎΡΡΠΉ ΡΠ²Π»ΡΠ΅ΡΡΡ ΠΊΠ»Π°ΡΡΠΎΠΌ. Π£ ΡΡΠΎΠ³ΠΎ Π΅ΡΡΡ ΠΈ Π΄ΡΡΠ³Π°Ρ ΡΡΠΎΡΠΎΠ½Π°, ΠΎ Π½Π΅ΠΉ ΡΡΡΡ Π΄Π°Π»ΡΡΠ΅. ΠΠΎΠΆΠ½ΠΎ ΠΏΠΎΠΏΡΠΎΠ±ΠΎΠ²Π°ΡΡ ΠΈΡΠΏΠΎΠ»ΡΠ·ΠΎΠ²Π°ΡΡ ΠΊΠ»Π°ΡΡ-ΠΎΠ±ΠΎΠ»ΠΎΡΠΊΡ Π½Π°Π΄ ΠΏΠ΅ΡΠ΅ΠΌΠ΅Π½Π½ΠΎΠΉ. Π’ΠΎΠ³Π΄Π° ΠΊΠΎΠ»ΠΈΡΠ΅ΡΡΠ²ΠΎ ΡΡΡΠ»ΠΎΠΊ ΠΏΡΠΈ ΠΏΠ΅ΡΠ΅Π΄Π°ΡΠ΅ Π² ΡΡΠ½ΠΊΡΠΈΠΈ ΡΠ²Π΅Π»ΠΈΡΠΈΡΡΡ ΡΠΎΠ»ΡΠΊΠΎ Ρ Π½Π΅Ρ, Π° ΠΊΠΎΠ»ΠΈΡΠ΅ΡΡΠ²ΠΎ ΡΡΡΠ»ΠΎΠΊ Π½Π° Π·Π½Π°ΡΠ΅Π½ΠΈΡ Π²Π½ΡΡΡΠΈ ΡΡΡΡΠΊΡΡΡΡ ΠΎΡΡΠ°Π½ΡΡΡΡ ΠΏΡΠ΅ΠΆΠ½ΠΈΠΌΠΈ. Π ΡΠ΅Π»ΠΎΠΌ Ρ ΠΎΡΠ΅ΡΡΡ ΠΏΠΎΡΠΌΠΎΡΡΠ΅ΡΡ, ΠΊΠ°ΠΊΠΎΠ΅ ΠΊΠΎΠ»ΠΈΡΠ΅ΡΡΠ²ΠΎ ΠΏΠ΅ΡΠ΅ΠΌΠ΅Π½Π½ΡΡ ΡΡΡΠ»ΠΎΡΠ½ΠΎΠ³ΠΎ ΡΠΈΠΏΠ° Π΄ΠΎΠ»ΠΆΠ½ΠΎ Π±ΡΡΡ Π² ΡΡΡΡΠΊΡΡΡΠ΅, ΡΡΠΎΠ±Ρ Π΅Ρ ΠΏΡΠΎΠΈΠ·Π²ΠΎΠ΄ΠΈΡΠ΅Π»ΡΠ½ΠΎΡΡΡ ΡΠ½ΠΈΠ·ΠΈΠ»Π°ΡΡ Π½ΠΈΠΆΠ΅, ΡΠ΅ΠΌ ΠΏΡΠΎΠΈΠ·Π²ΠΎΠ΄ΠΈΡΠ΅Π»ΡΠ½ΠΎΡΡΡ ΠΊΠ»Π°ΡΡΠΎΠ² Ρ ΡΠ΅ΠΌΠΈ ΠΆΠ΅ ΠΏΠ°ΡΠ°ΠΌΠ΅ΡΡΠ°ΠΌΠΈ. Π ΡΠ΅ΡΠΈ Π΅ΡΡΡ ΡΡΠ°ΡΡΡ βStop Using Structs!β, ΠΊΠΎΡΠΎΡΠ°Ρ Π·Π°Π΄Π°Π΅Ρ ΡΠΎΡ ΠΆΠ΅ Π²ΠΎΠΏΡΠΎΡ ΠΈ ΠΎΡΠ²Π΅ΡΠ°Π΅Ρ Π½Π° Π½Π΅Π³ΠΎ. Π― ΡΠΊΠ°ΡΠ°Π» ΠΏΡΠΎΠ΅ΠΊΡ ΠΈ ΡΠ΅ΡΠΈΠ» ΡΠ°Π·ΠΎΠ±ΡΠ°ΡΡΡΡ, ΡΡΠΎ Π³Π΄Π΅ ΠΏΡΠΎΠΈΡΡ ΠΎΠ΄ΠΈΡ, ΠΈ Π² ΠΊΠ°ΠΊΠΈΡ ΡΠ»ΡΡΠ°ΡΡ ΠΌΡ ΠΏΠΎΠ»ΡΡΠ°Π΅ΠΌ ΠΌΠ΅Π΄Π»Π΅Π½Π½ΡΠ΅ ΡΡΡΡΠΊΡΡΡΡ. ΠΠ²ΡΠΎΡ ΠΏΠΎΠΊΠ°Π·ΡΠ²Π°Π΅Ρ Π½ΠΈΠ·ΠΊΡΡ ΠΏΡΠΎΠΈΠ·Π²ΠΎΠ΄ΠΈΡΠ΅Π»ΡΠ½ΠΎΡΡΡ ΡΡΡΡΠΊΡΡΡ ΠΏΠΎ ΡΡΠ°Π²Π½Π΅Π½ΠΈΡ Ρ ΠΊΠ»Π°ΡΡΠ°ΠΌΠΈ, ΡΠΏΠΎΡΠΈΡΡ Ρ ΡΠ΅ΠΌ, ΡΡΠΎ ΡΠΎΠ·Π΄Π°Π½ΠΈΠ΅ Π½ΠΎΠ²ΠΎΠ³ΠΎ ΠΎΠ±ΡΠ΅ΠΊΡΠ° Π½Π°ΠΌΠ½ΠΎΠ³ΠΎ ΠΌΠ΅Π΄Π»Π΅Π½Π½ΠΎΠ΅ Π·Π°Π½ΡΡΠΈΠ΅, ΡΠ΅ΠΌ ΡΠ²Π΅Π»ΠΈΡΠ΅Π½ΠΈΠ΅ ΡΡΡΠ»ΠΊΠΈ Π½Π° ΠΎΠ±ΡΠ΅ΠΊΡ, Π°Π±ΡΡΡΠ΄Π½ΠΎ (ΠΏΠΎΡΡΠΎΠΌΡ Ρ ΡΠ±ΡΠ°Π» ΡΡΡΠΎΠΊΡ, Π³Π΄Π΅ Π² ΡΠΈΠΊΠ»Π΅ ΠΊΠ°ΠΆΠ΄ΡΠΉ ΡΠ°Π· ΡΠΎΠ·Π΄Π°Π΅ΡΡΡ Π½ΠΎΠ²ΡΠΉ ΠΎΠ±ΡΠ΅ΠΊΡ). ΠΠΎ Π΅ΡΠ»ΠΈ ΠΌΡ Π½Π΅ Π±ΡΠ΄Π΅ΠΌ ΡΠΎΠ·Π΄Π°Π²Π°ΡΡ ΡΡΡΠ»ΠΊΡ Π½Π° ΠΎΠ±ΡΠ΅ΠΊΡ, Π° Π±ΡΠ΄Π΅ΠΌ ΠΏΡΠΎΡΡΠΎ ΠΏΠ΅ΡΠ΅Π΄Π°Π²Π°ΡΡ Π΅Π³ΠΎ Π² ΡΡΠ½ΠΊΡΠΈΡ Π΄Π»Ρ ΡΠ°Π±ΠΎΡΡ Ρ Π½ΠΈΠΌ, ΡΠΎ ΡΠ°Π·Π½ΠΈΡΡ Π² ΠΏΡΠΎΠΈΠ·Π²ΠΎΠ΄ΠΈΡΠ΅Π»ΡΠ½ΠΎΡΡΠΈ Π±ΡΠ΄Π΅Ρ ΠΎΡΠ΅Π½Ρ Π½Π΅ΡΡΡΠ΅ΡΡΠ²Π΅Π½Π½Π°Ρ. ΠΠ°ΠΆΠ΄ΡΠΉ ΡΠ°Π·, ΠΊΠΎΠ³Π΄Π° ΠΌΡ ΡΡΠ°Π²ΠΈΠΌ inline(never) Ρ ΡΡΠ½ΠΊΡΠΈΠΈ, Π½Π°ΡΠ΅ ΠΏΡΠΈΠ»ΠΎΠΆΠ΅Π½ΠΈΠ΅ ΠΎΠ±ΡΠ·Π°Π½ΠΎ Π²ΡΠΏΠΎΠ»Π½ΡΡΡ Π΅Ρ ΠΈ Π½Π΅ ΡΠΎΠ·Π΄Π°Π²Π°ΡΡ ΠΊΠΎΠ΄Π° Π² ΡΡΡΠΎΠΊΡ. Π‘ΡΠ΄Ρ ΠΏΠΎ ΡΠ΅ΡΡΠ°ΠΌ, Apple ΡΠ΄Π΅Π»Π°Π»Π° ΡΠ°ΠΊΠΈΠΌ ΠΎΠ±ΡΠ°Π·ΠΎΠΌ, ΡΡΠΎ ΠΎΠ±ΡΠ΅ΠΊΡ, ΠΏΠ΅ΡΠ΅Π΄Π°Π²Π°Π΅ΠΌΡΠΉ Π² ΡΡΠ½ΠΊΡΠΈΡ Π½Π΅ΠΌΠ½ΠΎΠ³ΠΎ ΠΌΠΎΠ΄ΠΈΡΠΈΡΠΈΡΡΠ΅ΡΡΡ, Π΄Π»Ρ ΡΡΡΡΠΊΡΡΡ ΠΊΠΎΠΌΠΏΠΈΠ»ΡΡΠΎΡ ΠΌΠ΅Π½ΡΠ΅Ρ ΠΌΡΡΠ°Π±Π΅Π»ΡΠ½ΠΎΡΡΡ ΠΈ Π΄Π΅Π»Π°Π΅Ρ Π΄ΠΎΡΡΡΠΏ ΠΊ Π½Π΅ ΠΌΡΡΠ°Π±Π΅Π»ΡΠ½ΡΠΌ ΡΠ²ΠΎΠΉΡΡΠ²Π°ΠΌ ΠΎΠ±ΡΠ΅ΠΊΡΠ° Π»Π΅Π½ΠΈΠ²ΡΠΌΠΈ. Π ΠΊΠ»Π°ΡΡΠ΅ ΠΏΡΠΎΠΈΡΡ ΠΎΠ΄ΠΈΡ Π½Π΅ΡΡΠΎ ΠΏΠΎΠ΄ΠΎΠ±Π½ΠΎΠ΅, Π½ΠΎ Π·Π°ΠΎΠ΄Π½ΠΎ ΡΠ²Π΅Π»ΠΈΡΠΈΠ²Π°Π΅Ρ ΡΠΈΡΠ»ΠΎ ΡΡΡΠ»ΠΎΠΊ Π½Π° ΠΎΠ±ΡΠ΅ΠΊΡ. Π ΡΠ΅ΠΏΠ΅ΡΡ Ρ Π½Π°Ρ Π΅ΡΡΡ ΠΎΠ±ΡΠ΅ΠΊΡ lazy, Π²ΡΠ΅ Π΅Π³ΠΎ ΠΏΠΎΠ»Ρ ΡΠ°ΠΊΠΆΠ΅ lazy, ΠΈ ΠΊΠ°ΠΆΠ΄ΡΠΉ ΡΠ°Π·, ΠΊΠΎΠ³Π΄Π° ΠΌΡ Π²ΡΠ·ΡΠ²Π°Π΅ΠΌ ΠΏΠ΅ΡΠ΅ΠΌΠ΅Π½Π½ΡΡ ΠΎΠ±ΡΠ΅ΠΊΡΠ°, ΠΎΠ½ Π΅Π³ΠΎ ΠΈΠ½ΠΈΡΠΈΠ°Π»ΠΈΠ·ΠΈΡΡΠ΅Ρ. Π ΡΡΠΎΠΌ Ρ ΡΡΡΡΠΊΡΡΡ Π½Π΅Ρ ΡΠ°Π²Π½ΡΡ : ΠΏΡΠΈ Π²ΡΠ·ΠΎΠ²Π΅ Π² ΡΡΠ½ΠΊΡΠΈΠΈ Π΄Π²ΡΡ ΠΏΠ΅ΡΠ΅ΠΌΠ΅Π½Π½ΡΡ , Ρ ΠΎΠ±ΡΠ΅ΠΊΡΠ° ΡΡΡΡΠΊΡΡΡΠ° Π»ΠΈΡΡ Π½Π΅ΠΌΠ½ΠΎΠ³ΠΎ ΡΡΡΡΠΏΠ°Π΅Ρ ΠΊΠ»Π°ΡΡΡ Π² ΡΠΊΠΎΡΠΎΡΡΠΈ; ΠΏΡΠΈ Π²ΡΠ·ΠΎΠ²Π΅ ΡΡΡΡ ΠΈ Π±ΠΎΠ»Π΅Π΅, ΡΡΡΡΠΊΡΡΡΠ° Π²ΡΠ΅Π³Π΄Π° Π±ΡΠ΄Π΅Ρ Π±ΡΡΡΡΠ΅Π΅.
Π’Π΅ΡΡ 3: Π‘ΡΠ°Π²Π½ΠΈΠ²Π°Π΅ΠΌ ΠΏΡΠΎΠΈΠ·Π²ΠΎΠ΄ΠΈΡΠ΅Π»ΡΠ½ΠΎΡΡΡ Π‘ΡΡΡΠΊΡΡΡ ΠΈ ΠΠ»Π°ΡΡΠΎΠ² Ρ ΡΠ°Π½ΡΡΠΈΡ Π±ΠΎΠ»ΡΡΠΈΠ΅ ΠΊΠ»Π°ΡΡΡ
Π’Π°ΠΊΠΆΠ΅ Ρ Π½Π΅ΠΌΠ½ΠΎΠ³ΠΎ ΠΈΠ·ΠΌΠ΅Π½ΠΈΠ» ΡΠ°ΠΌ ΠΌΠ΅ΡΠΎΠ΄, ΠΊΠΎΡΠΎΡΡΠΉ Π²ΡΠ·ΡΠ²Π°Π»ΡΡ ΠΏΡΠΈ Π΄ΠΎΠ±Π°Π²Π»Π΅Π½ΠΈΠΈ Π΅ΡΠ΅ ΠΎΠ΄Π½ΠΎΠΉ ΠΏΠ΅ΡΠ΅ΠΌΠ΅Π½Π½ΠΎΠΉ (ΡΠ°ΠΊΠΈΠΌ ΠΎΠ±ΡΠ°Π·ΠΎΠΌ Π² ΠΌΠ΅ΡΠΎΠ΄Π΅ ΠΈΠ½ΠΈΡΠΈΠ°Π»ΠΈΠ·ΠΈΡΠΎΠ²Π°Π»ΠΈΡΡ ΡΡΠΈ ΠΏΠ΅ΡΠ΅ΠΌΠ΅Π½Π½ΡΠ΅, Π° Π½Π΅ Π΄Π²Π΅, ΠΊΠ°ΠΊ Π² ΡΡΠ°ΡΡΠ΅), ΠΈ ΡΡΠΎ Π±Ρ Π½Π΅ Π±ΡΠ»ΠΎ ΠΏΠ΅ΡΠ΅ΠΏΠΎΠ»Π½Π΅Π½ΠΈΡ Int, Π·Π°ΠΌΠ΅Π½ΠΈΠ» ΠΎΠΏΠ΅ΡΠ°ΡΠΈΠΈ Π½Π°Π΄ ΠΏΠ΅ΡΠ΅ΠΌΠ΅Π½Π½ΡΠΌΠΈ Π½Π° ΡΡΠΌΠΌΡ ΠΈ Π²ΡΡΠΈΡΠ°Π½ΠΈΠ΅. ΠΠΎΠ±Π°Π²ΠΈΠ» Π±ΠΎΠ»Π΅Π΅ ΠΏΠΎΠ½ΡΡΠ½ΡΠ΅ ΠΌΠ΅ΡΡΠΈΠΊΠΈ Π²ΡΠ΅ΠΌΠ΅Π½ΠΈ (Π½Π° ΡΠΊΡΠΈΠ½ΡΠΎΡΠ΅ ΡΡΠΎ ΡΠ΅ΠΊΡΠ½Π΄Ρ, Π½ΠΎ Π½Π°ΠΌ ΡΡΠΎ Π½Π΅ ΡΠ°ΠΊ Π²Π°ΠΆΠ½ΠΎ, Π²Π°ΠΆΠ½ΠΎ ΠΏΠΎΠ½ΠΈΠΌΠ°Π½ΠΈΠ΅ ΠΏΠΎΠ»ΡΡΠΈΠ²ΡΠΈΡ ΡΡ ΠΏΡΠΎΠΏΠΎΡΡΠΈΠΉ), ΡΠ΄Π°Π»Π΅Π½ΠΈΠ΅ ΡΡΠ΅ΠΉΠΌΠ²ΠΎΡΠΊΠ° Darwin (Π½Π΅ ΠΈΡΠΏΠΎΠ»ΡΠ·ΡΡ Π² ΠΏΡΠΎΠ΅ΠΊΡΠ°Ρ , Π²ΠΎΠ·ΠΌΠΎΠΆΠ½ΠΎ Π·ΡΡ, ΡΠ°Π·Π½ΠΈΡΡ Π² ΡΠ΅ΡΡΠ°Ρ Π΄ΠΎ/ΠΏΠΎΡΠ»Π΅ Π΄ΠΎΠ±Π°Π²Π»Π΅Π½ΠΈΡ ΡΡΠ΅ΠΉΠΌΠ²ΠΎΡΠΊΠ° Π² ΠΌΠΎΡΠΌ ΡΠ΅ΡΡΠ΅ Π½Π΅Ρ), Π²ΠΊΠ»ΡΡΠ΅Π½ΠΈΠ΅ ΠΌΠ°ΠΊΡΠΈΠΌΠ°Π»ΡΠ½ΠΎΠΉ ΠΎΠΏΡΠΈΠΌΠΈΠ·Π°ΡΠΈΠΈ ΠΈ Π±ΠΈΠ»Π΄ Π½Π° ΡΠ΅Π»ΠΈΠ·Π½ΠΎΠΉ ΡΠ±ΠΎΡΠΊΠ΅ (ΠΊΠ°ΠΆΠ΅ΡΡΡ, ΡΠ°ΠΊ Π±ΡΠ΄Π΅Ρ ΡΠ΅ΡΡΠ½Π΅Π΅), ΠΈ Π²ΠΎΡ ΡΠ΅Π·ΡΠ»ΡΡΠ°Ρ:
Π ΠΈΡ. 2: ΠΡΠΎΠΈΠ·Π²ΠΎΠ΄ΠΈΡΠ΅Π»ΡΠ½ΠΎΡΡΡ ΡΡΡΡΠΊΡΡΡ ΠΈ ΠΊΠ»Π°ΡΡΠΎΠ² ΠΈΠ· ΡΡΠ°ΡΡΠΈ βStop Using Structsβ
Π Π°Π·Π½ΠΈΡΠ΅ Π² ΡΠ΅Π·ΡΠ»ΡΡΠ°ΡΠ°Ρ ΡΠ΅ΡΡΠ° Π½Π΅Π·Π½Π°ΡΠΈΡΠ΅Π»ΡΠ½Ρ.
Π’Π΅ΡΡ 4: Π€ΡΠ½ΠΊΡΠΈΡ, ΠΏΡΠΈΠ½ΠΈΠΌΠ°ΡΡΠ°Ρ Generic, Protocol ΠΈ ΡΡΠ½ΠΊΡΠΈΡ Π±Π΅Π· Generic
ΠΡΠ»ΠΈ Π²Π·ΡΡΡ Π΄ΠΆΠ΅Π½Π΅ΡΠΈΠΊ ΡΡΠ½ΠΊΡΠΈΡ ΠΈ ΠΏΠ΅ΡΠ΅Π΄Π°ΡΡ ΡΡΠ΄Π° Π΄Π²Π° Π·Π½Π°ΡΠ΅Π½ΠΈΡ, ΠΎΠ±ΡΠ΅Π΄ΠΈΠ½Π΅Π½Π½ΡΡ ΡΠΎΠ»ΡΠΊΠΎ Π²ΠΎΠ·ΠΌΠΎΠΆΠ½ΠΎΡΡΡΡ ΡΡΠ°Π²Π½Π΅Π½ΠΈΡ ΡΡΠΈΡ Π·Π½Π°ΡΠ΅Π½ΠΈΠΉ (func min), ΡΠΎΠ³Π΄Π° ΠΊΠΎΠ΄ ΠΈΠ· ΡΡΡΡ ΡΡΡΠΎΠΊ ΠΏΡΠ΅Π²ΡΠ°ΡΠΈΡΡΡ Π² ΠΊΠΎΠ΄ ΠΈΠ· Π²ΠΎΡΡΠΌΠΈ (ΡΠ°ΠΊ Π³ΠΎΠ²ΠΎΡΠΈΡ Apple). ΠΠΎ ΡΠ°ΠΊ Π±ΡΠ²Π°Π΅Ρ Π½Π΅ Π²ΡΠ΅Π³Π΄Π°, Ρ Xcode Π΅ΡΡΡ ΡΠΏΠΎΡΠΎΠ±Ρ ΠΎΠΏΡΠΈΠΌΠΈΠ·Π°ΡΠΈΠΈ, Π² ΠΊΠΎΡΠΎΡΡΡ , Π΅ΡΠ»ΠΈ ΠΎΠ½ ΠΏΡΠΈ Π²ΡΠ·ΠΎΠ²Π΅ ΡΡΠ½ΠΊΡΠΈΠΈ Π²ΠΈΠ΄ΠΈΡ, ΡΡΠΎ Π² Π½Π΅Π³ΠΎ ΠΏΠ΅ΡΠ΅Π΄Π°Π΅ΡΡΡ Π΄Π²Π΅ ΡΡΡΡΠΊΡΡΡΠ½ΡΡ Π·Π½Π°ΡΠ΅Π½ΠΈΡ, ΠΎΠ½ Π°Π²ΡΠΎΠΌΠ°ΡΠΈΡΠ΅ΡΠΊΠΈ Π³Π΅Π½Π΅ΡΠΈΡΡΠ΅Ρ ΡΡΠ½ΠΊΡΠΈΡ, ΠΏΡΠΈΠ½ΠΈΠΌΠ°ΡΡΡΡ Π΄Π²Π΅ ΡΡΡΡΠΊΡΡΡΡ, ΠΈ ΡΠΆΠ΅ Π½Π΅ ΠΊΠΎΠΏΠΈΡΡΠ΅Ρ Π·Π½Π°ΡΠ΅Π½ΠΈΠΉ.
Π ΠΈΡ. 3: Π’ΠΈΠΏΠΈΡΠ½Π°Ρ Generic ΡΡΠ½ΠΊΡΠΈΡ
Π― ΡΠ΅ΡΠΈΠ» ΠΏΡΠΎΡΠ΅ΡΡΠΈΡΠΎΠ²Π°ΡΡ Π΄Π²Π΅ ΡΡΠ½ΠΊΡΠΈΠΈ: Π² ΠΏΠ΅ΡΠ²ΠΎΠΉ ΠΎΠ±ΡΡΠ²Π»Π΅Π½ ΡΠΈΠΏ Π΄Π°Π½Π½ΡΡ Generic, Π²ΡΠΎΡΠΎΠΉ ΠΏΡΠΈΠ½ΠΈΠΌΠ°Π΅Ρ ΠΏΡΠΎΡΡΠΎ Protocol. Π Π½ΠΎΠ²ΠΎΠΉ Π²Π΅ΡΡΠΈΠΈ Swift 5.1 Protocol Π΄Π°ΠΆΠ΅ Π½Π΅ΠΌΠ½ΠΎΠ³ΠΎ Π±ΡΡΡΡΠ΅Π΅, ΡΠ΅ΠΌ Generic (Π΄ΠΎ Swift 5.1 ΠΏΡΠΎΡΠΎΠΊΠΎΠ»Ρ Π±ΡΠ»ΠΈ Π² 2 ΡΠ°Π·Π° ΠΌΠ΅Π΄Π»Π΅Π½Π½Π΅Π΅), Ρ ΠΎΡΡ ΠΏΠΎ Π²Π΅ΡΡΠΈΠΈ Apple Π²ΡΡ Π΄ΠΎΠ»ΠΆΠ½ΠΎ Π±ΡΡΡ Π½Π°ΠΎΠ±ΠΎΡΠΎΡ, Π° Π²ΠΎΡ ΠΊΠΎΠ³Π΄Π° Π΄Π΅Π»ΠΎ ΠΊΠ°ΡΠ°Π΅ΡΡΡ ΠΏΡΠΎΡ ΠΎΠ΄Π° ΠΏΠΎ ΠΌΠ°ΡΡΠΈΠ²Ρ, Π½Π°ΠΌ ΡΠΆΠ΅ Π½Π°Π΄ΠΎ ΠΏΡΠΈΠ²ΠΎΠ΄ΠΈΡΡ ΡΠΈΠΏ, ΡΡΠΎ Π·Π°ΠΌΠ΅Π΄Π»ΡΠ΅Ρ Generic (Π½ΠΎ ΠΎΠ½ΠΈ Π²ΡΡ ΡΠ°Π²Π½ΠΎ ΠΌΠΎΠ»ΠΎΠ΄ΡΡ, Π²Π΅Π΄Ρ ΠΏΠΎΠ±ΡΡΡΡΠ΅Π΅ ΠΏΡΠΎΡΠΎΠΊΠΎΠ»ΠΎΠ²):
Π ΠΈΡ. 4: Π‘ΡΠ°Π²Π½Π΅Π½ΠΈΠ΅ Generic ΠΈ Protocol ΠΏΡΠΈΠ½ΠΈΠΌΠ°ΡΡΠ΅ΠΉ ΡΡΠ½ΠΊΡΠΈΠΈ.
Π’Π΅ΡΡ 5: Π‘ΡΠ°Π²Π½ΠΈΠΌ Π²ΡΠ·ΠΎΠ² ΡΠΎΠ΄ΠΈΡΠ΅Π»ΡΡΠΊΠΎΠ³ΠΎ ΠΌΠ΅ΡΠΎΠ΄Π° ΠΈ ΡΠΎΠ΄Π½ΠΎΠ³ΠΎ, Π° Π·Π°ΠΎΠ΄Π½ΠΎ ΠΏΡΠΎΠ²Π΅ΡΠΈΠΌ final ΠΊΠ»Π°ΡΡ Π½Π° ΡΠ°ΠΊΠΎΠΉ Π²ΡΠ·ΠΎΠ²
Π§ΡΠΎ ΠΌΠ΅Π½Ρ ΡΠ°ΠΊ ΠΆΠ΅ Π²ΡΠ΅Π³Π΄Π° ΠΈΠ½ΡΠ΅ΡΠ΅ΡΠΎΠ²Π°Π»ΠΎ, Π½Π°ΡΠΊΠΎΠ»ΡΠΊΠΎ ΠΌΠ΅Π΄Π»Π΅Π½Π½ΠΎ ΡΠ°Π±ΠΎΡΠ°ΡΡ ΠΊΠ»Π°ΡΡΡ Ρ Π±ΠΎΠ»ΡΡΠΈΠΌ ΡΠΈΡΠ»ΠΎ ΡΠΎΠ΄ΠΈΡΠ΅Π»Π΅ΠΉ, Π½Π°ΡΠΊΠΎΠ»ΡΠΊΠΎ ΠΊΠ»Π°ΡΡ Π±ΡΡΡΡΠΎ Π²ΡΠ·ΡΠ²Π°Π΅Ρ ΡΠ²ΠΎΠΈ ΡΡΠ½ΠΊΡΠΈΠΈ ΠΈ ΡΡΠ½ΠΊΡΠΈΠΈ ΡΠΎΠ΄ΠΈΡΠ΅Π»Ρ. Π ΡΠ»ΡΡΠ°ΡΡ , ΠΊΠΎΠ³Π΄Π° ΠΌΡ ΠΏΡΡΠ°Π΅ΠΌΡΡ Π²ΡΠ·Π²Π°ΡΡ ΠΌΠ΅ΡΠΎΠ΄, ΠΊΠΎΡΠΎΡΡΠΉ ΠΏΡΠΈΠ½ΠΈΠΌΠ°Π΅Ρ ΠΊΠ»Π°ΡΡ, Π²ΡΡΡΠΏΠ°Π΅Ρ Π² ΠΈΠ³ΡΡ Π΄ΠΈΠ½Π°ΠΌΠΈΡΠ΅ΡΠΊΠ°Ρ Π΄ΠΈΡΠΏΠ΅ΡΡΠ΅ΡΠΈΠ·Π°ΡΠΈΡ. Π§ΡΠΎ ΡΡΠΎ ΡΠ°ΠΊΠΎΠ΅? ΠΠ°ΠΆΠ΄ΡΠΉ ΡΠ°Π·, ΠΊΠΎΠ³Π΄Π° Π²Π½ΡΡΡΠΈ Π½Π°ΡΠ΅ΠΉ ΡΡΠ½ΠΊΡΠΈΠΈ Π²ΡΠ·ΡΠ²Π°Π΅ΡΡΡ ΠΌΠ΅ΡΠΎΠ΄ ΠΈΠ»ΠΈ ΠΏΠ΅ΡΠ΅ΠΌΠ΅Π½Π½Π°Ρ, Π³Π΅Π½Π΅ΡΠΈΡΡΠ΅ΡΡΡ ΡΠΎΠΎΠ±ΡΠ΅Π½ΠΈΠ΅, Π·Π°ΠΏΡΠ°ΡΠΈΠ²Π°Ρ Ρ ΠΎΠ±ΡΠ΅ΠΊΡΠ° ΡΡΡ ΠΏΠ΅ΡΠ΅ΠΌΠ΅Π½Π½ΡΡ ΠΈΠ»ΠΈ ΠΌΠ΅ΡΠΎΠ΄. ΠΠ±ΡΠ΅ΠΊΡ, ΠΏΠΎΠ»ΡΡΠ°Ρ ΡΠ°ΠΊΠΎΠΉ Π·Π°ΠΏΡΠΎΡ, Π½Π°ΡΠΈΠ½Π°Π΅Ρ ΠΏΠΎΠΈΡΠΊ ΠΌΠ΅ΡΠΎΠ΄Π° Π² ΡΠ°Π±Π»ΠΈΡΠ΅ Π΄ΠΈΡΠΏΠ΅ΡΡΠ΅ΡΠΈΠ·Π°ΡΠΈΠΈ ΡΠ²ΠΎΠ΅Π³ΠΎ ΠΊΠ»Π°ΡΡΠ°, ΠΈ Π΅ΡΠ»ΠΈ Π±ΡΠ» Π²ΡΠ·Π²Π°Π½ override ΠΌΠ΅ΡΠΎΠ΄Π° ΠΈΠ»ΠΈ ΠΏΠ΅ΡΠ΅ΠΌΠ΅Π½Π½ΠΎΠΉ, Π·Π°Π±ΠΈΡΠ°Π΅Ρ Π΅Ρ ΠΈ Π²ΠΎΠ·Π²ΡΠ°ΡΠ°Π΅Ρ, Π»ΠΈΠ±ΠΎ ΡΠ΅ΠΊΡΡΡΠΈΠ²Π½ΠΎ Π΄ΠΎΡ ΠΎΠ΄ΠΈΡ Π΄ΠΎ Π±Π°Π·ΠΎΠ²ΠΎΠ³ΠΎ ΠΊΠ»Π°ΡΡΠ°.
Π ΠΈΡ. 5: ΠΡΠ·ΠΎΠ²Ρ ΠΌΠ΅ΡΠΎΠ΄ΠΎΠ² ΠΊΠ»Π°ΡΡΠΎΠ², Π΄Π»Ρ ΡΠ΅ΡΡΠΈΡΠΎΠ²Π°Π½ΠΈΡ Π΄ΠΈΡΠΏΠ΅ΡΡΠ΅ΡΠΈΠ·Π°ΡΠΈΡ
ΠΠ· ΡΠ΅ΡΡΠ° Π²ΡΡΠ΅ ΠΌΠΎΠΆΠ½ΠΎ ΡΠ΄Π΅Π»Π°ΡΡ Π½Π΅ΡΠΊΠΎΠ»ΡΠΊΠΎ Π²ΡΠ²ΠΎΠ΄ΠΎΠ²: ΡΠ΅ΠΌ Π±ΠΎΠ»ΡΡΠ΅ Ρ ΠΊΠ»Π°ΡΡΠ° ΡΠΎΠ΄ΠΈΡΠ΅Π»ΡΡΠΊΠΈΡ ΠΊΠ»Π°ΡΡΠΎΠ², ΡΠ΅ΠΌ ΠΌΠ΅Π΄Π»Π΅Π½Π½Π΅Π΅ ΠΎΠ½ Π±ΡΠ΄Π΅Ρ ΡΠ°Π±ΠΎΡΠ°ΡΡ, ΠΈ ΡΡΠΎ ΡΠ°Π·Π½ΠΈΡΠ° Π² ΡΠΊΠΎΡΠΎΡΡΠΈ ΡΠ°Π±ΠΎΡΡ Π½Π°ΡΡΠΎΠ»ΡΠΊΠΎ ΠΌΠ°Π»Π°, ΡΡΠΎ Π΅ΠΉ ΠΌΠΎΠΆΠ½ΠΎ ΡΠΌΠ΅Π»ΠΎ ΠΏΡΠ΅Π½Π΅Π±ΡΠ΅Π³Π°ΡΡ, ΡΠΊΠΎΡΠ΅Π΅ Π²ΡΠ΅Π³ΠΎ ΠΎΠΏΡΠΈΠΌΠΈΠ·Π°ΡΠΈΠΈ ΠΊΠΎΠ΄Π° ΡΠ΄Π΅Π»Π°Π΅Ρ ΡΠ°ΠΊ, ΡΡΠΎ ΡΠ°Π·Π½ΠΈΡΡ Π² ΡΠΊΠΎΡΠΎΡΡΠΈ Π½Π΅ Π±ΡΠ΄Π΅Ρ. Π Π΄Π°Π½Π½ΠΎΠΌ ΠΏΡΠΈΠΌΠ΅ΡΠ΅ ΠΏΡΠ΅ΠΈΠΌΡΡΠ΅ΡΡΠ²Π° Ρ final ΠΌΠΎΠ΄ΠΈΡΠΈΠΊΠ°ΡΠΎΡΠ° ΠΊΠ»Π°ΡΡΠ° Π½Π΅Ρ, Π½Π°ΠΎΠ±ΠΎΡΠΎΡ, ΡΠ°Π±ΠΎΡΠ° ΠΊΠ»Π°ΡΡΠ° Π΄Π°ΠΆΠ΅ ΠΌΠ΅Π΄Π»Π΅Π½Π½Π΅Π΅, Π²ΠΎΠ·ΠΌΠΎΠΆΠ½ΠΎ ΡΡΠΎ ΡΠ²ΡΠ·Π°Π½ΠΎ Ρ ΡΠ΅ΠΌ, ΡΡΠΎ Π΄Π΅ΠΉΡΡΠ²ΠΈΡΠ΅Π»ΡΠ½ΠΎ Π±ΡΡΡΡΠΎΠΉ ΡΡΠ½ΠΊΡΠΈΠ΅ΠΉ ΠΎΠ½Π° ΡΠ°ΠΊ ΠΈ Π½Π΅ ΡΡΠ°Π½ΠΎΠ²ΠΈΡΡΡ.
Π’Π΅ΡΡ 6: ΠΡΠ·ΠΎΠ² ΠΏΠ΅ΡΠ΅ΠΌΠ΅Π½Π½ΠΎΠΉ Ρ ΠΌΠΎΠ΄ΠΈΡΠΈΠΊΠ°ΡΠΎΡΠΎΠΌ final ΠΏΡΠΎΡΠΈΠ² ΠΎΠ±ΡΡΠ½ΠΎΠΉ ΠΏΠ΅ΡΠ΅ΠΌΠ΅Π½Π½ΠΎΠΉ ΠΊΠ»Π°ΡΡΠ°
Π’ΠΎΠΆΠ΅ ΠΎΡΠ΅Π½Ρ ΠΈΠ½ΡΠ΅ΡΠ΅ΡΠ½ΡΠ΅ ΡΠ΅Π·ΡΠ»ΡΡΠ°ΡΡ Ρ ΠΏΡΠΈΡΠ²ΠΎΠ΅Π½ΠΈΠ΅ΠΌ ΠΌΠΎΠ΄ΠΈΡΠΈΠΊΠ°ΡΠΎΡΠ° final Π΄Π»Ρ ΠΏΠ΅ΡΠ΅ΠΌΠ΅Π½Π½ΠΎΠΉ, Π΅Π³ΠΎ ΠΌΠΎΠΆΠ½ΠΎ ΠΈΡΠΏΠΎΠ»ΡΠ·ΠΎΠ²Π°ΡΡ, ΠΊΠΎΠ³Π΄Π° ΡΠΎΡΠ½ΠΎ Π·Π½Π°Π΅ΡΡ, ΡΡΠΎ ΠΏΠ΅ΡΠ΅ΠΌΠ΅Π½Π½Π°Ρ Π½Π΅ Π±ΡΠ΄Π΅Ρ ΠΏΠ΅ΡΠ΅ΠΏΠΈΡΠ°Π½Π° Π½ΠΈΠ³Π΄Π΅ Π² Π½Π°ΡΠ»Π΅Π΄Π½ΠΈΠΊΠ°Ρ ΠΊΠ»Π°ΡΡΠ°. ΠΠΎΠΏΡΠΎΠ±ΡΠ΅ΠΌ ΠΏΠΎΡΡΠ°Π²ΠΈΡΡ ΠΌΠΎΠ΄ΠΈΡΠΈΠΊΠ°ΡΠΎΡ final ΠΊ ΠΏΠ΅ΡΠ΅ΠΌΠ΅Π½Π½ΠΎΠΉ. ΠΡΠ»ΠΈ Π±Ρ ΠΌΡ Π² Π½Π°ΡΠ΅ΠΌ ΡΠ΅ΡΡΠ΅ ΡΠΎΠ·Π΄Π°Π»ΠΈ Π»ΠΈΡΡ ΠΎΠ΄Π½Ρ ΠΏΠ΅ΡΠ΅ΠΌΠ΅Π½Π½ΡΡ ΠΈ Π²ΡΠ·ΡΠ²Π°Π»ΠΈ Ρ Π½Π΅Ρ ΡΠ²ΠΎΠΉΡΡΠ²ΠΎ, ΡΠΎΠ³Π΄Π° Π±Ρ ΠΎΠ½ΠΎ ΠΈΠ½ΠΈΡΠΈΠ°Π»ΠΈΠ·ΠΈΡΠΎΠ²Π°Π»ΠΎΡΡ ΠΎΠ΄ΠΈΠ½ ΡΠ°Π· (ΡΠ΅Π·ΡΠ»ΡΡΠ°Ρ ΡΠ½ΠΈΠ·Ρ). ΠΡΠ»ΠΈ ΠΌΡ ΠΏΠΎ-ΡΠ΅ΡΡΠ½ΠΎΠΌΡ Π±ΡΠ΄Π΅ΠΌ ΡΠΎΠ·Π΄Π°Π²Π°ΡΡ ΠΊΠ°ΠΆΠ΄ΡΠΉ ΡΠ°Π· Π½ΠΎΠ²ΡΠΉ ΠΎΠ±ΡΠ΅ΠΊΡ ΠΈ Π·Π°ΠΏΡΠ°ΡΠΈΠ²Π°ΡΡ Π΅Π³ΠΎ ΠΏΠ΅ΡΠ΅ΠΌΠ΅Π½Π½ΡΡ, ΡΠΊΠΎΡΠΎΡΡΡ ΡΠ°Π±ΠΎΡΡ Π·Π°ΠΌΠ΅ΡΠ½ΠΎ Π·Π°ΠΌΠ΅Π΄Π»ΠΈΡΡΡ (ΡΠ΅Π·ΡΠ»ΡΡΠ°Ρ Π²Π²Π΅ΡΡ Ρ):
Π ΠΈΡ. 6: ΠΡΠ·ΠΎΠ² final ΠΏΠ΅ΡΠ΅ΠΌΠ΅Π½Π½ΠΎΠΉ
ΠΡΠ΅Π²ΠΈΠ΄Π½ΠΎ, ΡΡΠΎ Π½Π° ΠΏΠΎΠ»ΡΠ·Ρ ΠΏΠ΅ΡΠ΅ΠΌΠ΅Π½Π½ΠΎΠΉ ΠΌΠΎΠ΄ΠΈΡΠΈΠΊΠ°ΡΠΎΡ Π½Π΅ ΠΏΠΎΡΠ΅Π», ΠΈ ΠΎΠ½Π° Π²ΡΠ΅Π³Π΄Π° ΠΌΠ΅Π΄Π»Π΅Π½Π½Π΅Π΅ ΡΠ²ΠΎΠ΅Π³ΠΎ ΠΊΠΎΠ½ΠΊΡΡΠ΅Π½ΡΠ°.
Π’Π΅ΡΡ 7: ΠΡΠΎΠ±Π»Π΅ΠΌΠ° ΠΏΠΎΠ»ΠΈΠΌΠΎΡΡΠΈΠ·ΠΌΠ° ΠΈ ΠΏΡΠΎΡΠΎΠΊΠΎΠ»ΠΎΠ² Π΄Π»Ρ ΡΡΡΡΠΊΡΡΡ. ΠΠ»ΠΈ ΠΏΡΠΎΠΈΠ·Π²ΠΎΠ΄ΠΈΡΠ΅Π»ΡΠ½ΠΎΡΡΡ Existential container
ΠΡΠΎΠ±Π»Π΅ΠΌΠ°: Π΅ΡΠ»ΠΈ Π²Π·ΡΡΡ ΠΏΡΠΎΡΠΎΠΊΠΎΠ», ΠΏΠΎΠ΄Π΄Π΅ΡΠΆΠΈΠ²Π°ΡΡΠΈΠΉ ΠΎΠΏΡΠ΅Π΄Π΅Π»Π΅Π½Π½ΡΠΉ ΠΌΠ΅ΡΠΎΠ΄, ΠΈ Π½Π΅ΡΠΊΠΎΠ»ΡΠΊΠΎ ΡΡΡΡΠΊΡΡΡ, Π½Π°ΡΠ»Π΅Π΄ΡΠ΅ΠΌΡΡ ΠΎΡ ΡΡΠΎΠ³ΠΎ ΠΏΡΠΎΡΠΎΠΊΠΎΠ»Π°, ΡΠΎ ΡΡΠΎ Π±ΡΠ΄Π΅Ρ Π΄ΡΠΌΠ°ΡΡ Π½Π°Ρ ΠΊΠΎΠΌΠΏΠΈΠ»ΡΡΠΎΡ, ΠΊΠΎΠ³Π΄Π° ΠΌΡ ΠΏΠΎΠΌΠ΅ΡΡΠΈΠΌ ΡΡΡΡΠΊΡΡΡΡ Ρ ΡΠ°Π·Π½ΡΠΌΠΈ ΠΎΠ±ΡΡΠΌΠ°ΠΌΠΈ Ρ ΡΠ°Π½ΠΈΠΌΡΡ Π·Π½Π°ΡΠ΅Π½ΠΈΠΉ Π² ΠΎΠ΄ΠΈΠ½ ΠΌΠ°ΡΡΠΈΠ², ΠΎΠ±ΡΠ΅Π΄ΠΈΠ½Π΅Π½Π½ΡΠΉ ΠΈΠ·Π½Π°ΡΠ°Π»ΡΠ½ΡΠΌ ΠΏΡΠΎΡΠΎΠΊΠΎΠ»ΠΎΠΌ?
ΠΠ»Ρ ΡΠ΅ΡΠ΅Π½ΠΈΡ ΠΏΡΠΎΠ±Π»Π΅ΠΌΡ Π²ΡΠ·ΠΎΠ²Π° ΠΌΠ΅ΡΠΎΠ΄Π°, ΠΏΡΠ΅Π΄ΠΎΠΏΡΠ΅Π΄Π΅Π»Π΅Π½Π½ΠΎΠ³ΠΎ Π² Π½Π°ΡΠ»Π΅Π΄Π½ΠΈΠΊΠ°Ρ , ΠΈΡΠΏΠΎΠ»ΡΠ·ΡΠ΅ΡΡΡ ΠΌΠ΅Ρ Π°Π½ΠΈΠ·ΠΌ Protocol Witness Table. ΠΠ½ ΡΠΎΠ·Π΄Π°Π΅Ρ ΡΡΡΡΠΊΡΡΡΡ ΠΎΠ±ΠΎΠ»ΠΎΡΠΊΠΈ, ΠΊΠΎΡΠΎΡΡΠ΅ ΡΡΡΠ»Π°ΡΡΡΡ Π½Π° Π½Π΅ΠΎΠ±Ρ ΠΎΠ΄ΠΈΠΌΡΠ΅ ΠΌΠ΅ΡΠΎΠ΄Ρ.
ΠΠ»Ρ ΡΠ΅ΡΠ΅Π½ΠΈΡ ΠΏΡΠΎΠ±Π»Π΅ΠΌΡ Ρ ΡΠ°Π½Π΅Π½ΠΈΡ Π΄Π°Π½Π½ΡΡ ΠΈΡΠΏΠΎΠ»ΡΠ·ΡΠ΅ΡΡΡ Existential container. ΠΠ½ Ρ ΡΠ°Π½ΠΈΡ Π² ΡΠ΅Π±Π΅ 5 ΡΡΠ΅Π΅ΠΊ ΠΈΠ½ΡΠΎΡΠΌΠ°ΡΠΈΠΈ, ΠΊΠ°ΠΆΠ΄Π°Ρ ΠΏΠΎ 8 Π±Π°ΠΉΡ. Π ΠΏΠ΅ΡΠ²ΡΡ ΡΡΡΡ Π²ΡΠ΄Π΅Π»ΡΠ΅ΡΡΡ ΠΌΠ΅ΡΡΠΎ ΠΏΠΎΠ΄ Ρ ΡΠ°Π½ΠΈΠΌΡΠ΅ Π΄Π°Π½Π½ΡΠ΅ Π² ΡΡΡΡΠΊΡΡΡΠ΅ (Π΅ΡΠ»ΠΈ ΠΎΠ½ΠΈ Π½Π΅ Π²Π»Π΅Π·Π°ΡΡ, ΡΠΎ ΠΎΠ½ ΡΠΎΠ·Π΄Π°Π΅Ρ ΡΡΡΠ»ΠΊΡ Π½Π° ΠΊΡΡΡ, Π² ΠΊΠΎΡΠΎΡΠΎΠΉ Ρ ΡΠ°Π½ΡΡΡΡ Π΄Π°Π½Π½ΡΠ΅), Π² ΡΠ΅ΡΠ²Π΅ΡΡΠΎΠΉ Ρ ΡΠ°Π½ΠΈΡΡΡ ΠΈΠ½ΡΠΎΡΠΌΠ°ΡΠΈΡ ΠΎ ΡΠΈΠΏΠ°Ρ Π΄Π°Π½Π½ΡΡ , ΠΊΠΎΡΠΎΡΡΠ΅ ΠΈΡΠΏΠΎΠ»ΡΠ·ΡΡΡΡΡ Π² ΡΡΡΡΠΊΡΡΡΠ΅, ΠΈ Π³ΠΎΠ²ΠΎΡΠΈΡ Π½Π°ΠΌ ΠΎ ΡΠΏΠΎΡΠΎΠ±Π΅ ΡΠΏΡΠ°Π²Π»Π΅Π½ΠΈΡ ΡΡΠΈΠΌΠΈ Π΄Π°Π½Π½ΡΠΌΠΈ, Π½Π° ΠΏΡΡΠΎΠΉ Ρ ΡΠ°Π½ΡΡΡΡ ΡΡΡΠ»ΠΊΠΈ Π½Π° ΠΌΠ΅ΡΠΎΠ΄Ρ ΠΎΠ±ΡΠ΅ΠΊΡΠ°.
Π ΠΈΡ 7. Π‘ΡΠ°Π²Π½Π΅Π½ΠΈΠ΅ ΠΏΡΠΎΠΈΠ·Π²ΠΎΠ΄ΠΈΡΠ΅Π»ΡΠ½ΠΎΡΡΠΈ ΠΌΠ°ΡΡΠΈΠ²Π°, ΠΊΠΎΡΠΎΡΡΠΉ ΡΠΎΠ·Π΄Π°Π΅Ρ ΡΡΡΠ»ΠΊΡ Π½Π° ΠΎΠ±ΡΠ΅ΠΊΡ ΠΈ ΠΊΠΎΡΠΎΡΡΠΉ Π΅Π³ΠΎ ΡΠΎΠ΄Π΅ΡΠΆΠΈΡ
ΠΠ΅ΠΆΠ΄Ρ ΠΏΠ΅ΡΠ²ΡΠΌ ΠΈ Π²ΡΠΎΡΡΠΌ ΡΠ΅Π·ΡΠ»ΡΡΠ°ΡΠΎΠΌ ΡΠΈΡΠ»ΠΎ ΠΏΠ΅ΡΠ΅ΠΌΠ΅Π½Π½ΡΡ ΡΠ²Π΅Π»ΠΈΡΠΈΠ»ΠΎΡΡ Π²ΡΡΠΎΠ΅. Π ΡΠ΅ΠΎΡΠΈΠΈ, ΠΎΠ½ΠΈ Π΄ΠΎΠ»ΠΆΠ½Ρ ΠΏΠΎΠΌΠ΅ΡΠ°ΡΡΡΡ Π² ΠΊΠΎΠ½ΡΠ΅ΠΉΠ½Π΅Ρ, ΠΎΠ½ΠΈ Ρ ΡΠ°Π½ΡΡΡΡ Π² ΡΡΠΎΠΌ ΠΊΠΎΠ½ΡΠ΅ΠΉΠ½Π΅ΡΠ΅, ΠΈ ΡΠ°Π·Π½ΠΈΡΠ° Π² ΡΠΊΠΎΡΠΎΡΡΠΈ ΠΎΠ±ΡΡΠ»ΠΎΠ²Π»Π΅Π½Π° ΠΎΠ±ΡΠ΅ΠΌΠΎΠΌ ΡΡΡΡΠΊΡΡΡΡ. Π§ΡΠΎ ΠΈΠ½ΡΠ΅ΡΠ΅ΡΠ½ΠΎ, Π΅ΡΠ»ΠΈ Π²Ρ ΡΠΌΠ΅Π½ΡΡΠΈΡΠ΅ ΡΠΈΡΠ»ΠΎ ΠΏΠ΅ΡΠ΅ΠΌΠ΅Π½Π½ΡΡ Π²ΠΎ Π²ΡΠΎΡΠΎΠΉ ΡΡΡΡΠΊΡΡΡΠ΅, ΡΠΎ Π²ΡΠ΅ΠΌΡ ΡΠ°Π±ΠΎΡΡ Π½Π΅ ΠΈΠ·ΠΌΠ΅Π½ΠΈΡΡΡ, ΡΠΎ Π΅ΡΡΡ ΠΊΠΎΠ½ΡΠ΅ΠΉΠ½Π΅Ρ Π² ΡΠ°ΠΌΠΎΠΌ Π΄Π΅Π»Π΅ Ρ ΡΠ°Π½ΠΈΡ 3 ΠΈΠ»ΠΈ 2 ΠΏΠ΅ΡΠ΅ΠΌΠ΅Π½Π½ΡΠ΅, Π½ΠΎ ΠΏΠΎ-Π²ΠΈΠ΄ΠΈΠΌΠΎΠΌΡ, Π΄Π»Ρ ΠΎΠ΄Π½ΠΎΠΉ ΠΏΠ΅ΡΠ΅ΠΌΠ΅Π½Π½ΠΎΠΉ ΡΡΡΠ΅ΡΡΠ²ΡΡΡ ΠΎΡΠΎΠ±ΡΠ΅ ΡΡΠ»ΠΎΠ²ΠΈΡ, ΠΊΠΎΡΠΎΡΡΠ΅ ΡΡΡΠ΅ΡΡΠ²Π΅Π½Π½ΠΎ ΠΏΠΎΠ²ΡΡΠ°ΡΡ ΡΠΊΠΎΡΠΎΡΡΡ. ΠΡΠΎΡΠ°Ρ ΡΡΡΡΠΊΡΡΡΠ° ΠΈΠ΄Π΅Π°Π»ΡΠ½ΠΎ Π²ΠΏΠΈΡΡΠ²Π°Π΅ΡΡΡ Π² ΠΊΠΎΠ½ΡΠ΅ΠΉΠ½Π΅Ρ ΠΈ ΠΎΡΠ»ΠΈΡΠ°Π΅ΡΡΡ ΠΏΠΎ ΠΎΠ±ΡΠ΅ΠΌ ΠΎΡ ΡΡΠ΅ΡΡΠ΅ΠΉ Π² Π΄Π²Π° ΡΠ°Π·Π°, ΡΡΠΎ Π΄Π°ΡΡ ΡΠΈΠ»ΡΠ½ΡΡ Π΄Π΅Π³ΡΠ°Π΄Π°ΡΠΈΡ ΠΏΠΎ Π²ΡΠ΅ΠΌΠ΅Π½ΠΈ Π²ΡΠΏΠΎΠ»Π½Π΅Π½ΠΈΡ, Π² ΡΡΠ°Π²Π½Π΅Π½ΠΈΠΈ Ρ ΠΎΡΡΠ°Π»ΡΠ½ΡΠΌΠΈ ΡΡΡΡΠΊΡΡΡΠ°ΠΌΠΈ.
ΠΠ΅ΠΌΠ½ΠΎΠ³ΠΎ ΡΠ΅ΠΎΡΠΈΠΈ Π΄Π»Ρ ΠΎΠΏΡΠΈΠΌΠΈΠ·Π°ΡΠΈΠΈ Π²Π°ΡΠΈΡ ΠΏΡΠΎΠ΅ΠΊΡΠΎΠ²
ΠΠ° ΠΏΡΠΎΠΈΠ·Π²ΠΎΠ΄ΠΈΡΠ΅Π»ΡΠ½ΠΎΡΡΡ ΡΡΡΡΠΊΡΡΡ ΠΌΠΎΠ³ΡΡ Π²Π»ΠΈΡΡΡ ΡΠ»Π΅Π΄ΡΡΡΠΈΠ΅ ΡΠ°ΠΊΡΠΎΡΡ:
Π§Π΅ΠΌ ΠΏΠ»ΠΎΡ ΠΈ ΠΈ ΠΎΠΏΠ°ΡΠ½Ρ ΠΊΠ»Π°ΡΡΡ ΠΏΠΎ ΡΡΠ°Π²Π½Π΅Π½ΠΈΡ ΡΠΎ ΡΡΡΡΠΊΡΡΡΠ°ΠΌΠΈ
ΠΡ Π½Π΅ Π²ΡΠ΅Π³Π΄Π° ΡΠΏΡΠ°Π²Π»ΡΠ΅ΠΌ ΠΊΠΎΠΏΠΈΡΠΎΠ²Π°Π½ΠΈΠ΅ΠΌ Π½Π°ΡΠΈΡ ΠΎΠ±ΡΠ΅ΠΊΡΠΎΠ², Π° Π΅ΡΠ»ΠΈ ΠΌΡ ΡΡΠΎ Π΄Π΅Π»Π°Π΅ΠΌ, ΠΌΡ ΠΌΠΎΠΆΠ΅ΠΌ ΠΏΠΎΠ»ΡΡΠΈΡΡ ΡΠ»ΠΈΡΠΊΠΎΠΌ ΠΌΠ½ΠΎΠ³ΠΎ ΠΊΠΎΠΏΠΈΠΉ, ΠΊΠΎΡΠΎΡΡΠΌΠΈ ΡΠ»ΠΎΠΆΠ½ΠΎ Π±ΡΠ΄Π΅Ρ ΡΠΏΡΠ°Π²Π»ΡΡΡ (Π½Π°ΡΠΎΠ·Π΄Π°Π²Π°Π»ΠΈ ΠΎΠ±ΡΠ΅ΠΊΡΠΎΠ² Π² ΠΏΡΠΎΠ΅ΠΊΡΠ΅, ΠΊΠΎΡΠΎΡΡΠ΅ ΠΎΡΠ²Π΅ΡΠ°ΡΡ Π·Π° ΡΠΎΡΠΌΠΈΡΠΎΠ²Π°Π½ΠΈΠ΅ Π²ΡΡΡΠΊΠΈ, Π½Π°ΠΏΡΠΈΠΌΠ΅Ρ).
ΠΠ½ΠΈ Π½Π΅ ΡΠ°ΠΊΠΈΠ΅ Π±ΡΡΡΡΡΠ΅ ΠΊΠ°ΠΊ ΡΡΡΡΠΊΡΡΡΡ.
ΠΡΠ»ΠΈ Ρ Π½Π°Ρ Π΅ΡΡΡ ΡΡΡΠ»ΠΊΠ° Π½Π° ΠΎΠ±ΡΠ΅ΠΊΡ, ΠΈ ΠΌΡ ΠΏΡΡΠ°Π΅ΠΌΡΡ ΡΠΏΡΠ°Π²Π»ΡΡΡ Π½Π°ΡΠΈΠΌ ΠΏΡΠΈΠ»ΠΎΠΆΠ΅Π½ΠΈΠ΅ΠΌ Π² ΠΌΠ½ΠΎΠ³ΠΎΠΏΠΎΡΠΎΡΠ½ΠΎΠΌ ΡΡΠΈΠ»Π΅, ΠΌΡ ΠΌΠΎΠΆΠ΅ΠΌ ΠΏΠΎΠ»ΡΡΠΈΡΡ Race Condition Π² ΡΠ»ΡΡΠ°Π΅, ΠΊΠΎΠ³Π΄Π° Π½Π°Ρ ΠΎΠ±ΡΠ΅ΠΊΡ ΠΈΡΠΏΠΎΠ»ΡΠ·ΡΠ΅ΡΡΡ ΠΈΠ· Π΄Π²ΡΡ ΡΠ°Π·Π½ΡΡ ΠΌΠ΅ΡΡ (Π° ΡΡΠΎ Π½Π΅ ΡΠ°ΠΊ ΡΠ»ΠΎΠΆΠ½ΠΎ, Π²Π΅Π΄Ρ ΡΠΎΠ±ΡΠ°Π½Π½ΡΠΉ Ρ Xcode ΠΏΡΠΎΠ΅ΠΊΡ Π²ΡΠ΅Π³Π΄Π° ΡΡΡΡ ΠΌΠ΅Π΄Π»Π΅Π½Π½Π΅Π΅, ΡΠ΅ΠΌ Store Π²Π΅ΡΡΠΈΡ).
ΠΡΠ»ΠΈ ΠΌΡ ΠΏΡΡΠ°Π΅ΠΌΡΡ ΠΈΠ·Π±Π΅ΠΆΠ°ΡΡ Race Condition, ΠΌΡ ΡΡΠ°ΡΠΈΠΌ ΠΌΠ½ΠΎΠ³ΠΎ ΡΠ΅ΡΡΡΡΠΎΠ² Π½Π° LockβΠΈ Π½Π°ΡΠΈΡ Π΄Π°Π½Π½ΡΡ , ΡΡΠΎ Π½Π°ΡΠΈΠ½Π°Π΅Ρ ΠΏΠΎΠ΄ΡΠ΅Π΄Π°ΡΡ ΡΠ΅ΡΡΡΡΡ ΠΈ ΡΡΠ°ΡΠΈΡΡ Π²ΡΠ΅ΠΌΡ Π²ΠΌΠ΅ΡΡΠΎ Π±ΡΡΡΡΠΎΠΉ ΠΎΠ±ΡΠ°Π±ΠΎΡΠΊΠΈ ΠΈ ΠΌΡ ΠΏΠΎΠ»ΡΡΠ°Π΅ΠΌ Π΅ΡΠ΅ Π±ΠΎΠ»Π΅Π΅ ΠΌΠ΅Π΄Π»Π΅Π½Π½ΡΠ΅ ΠΎΠ±ΡΠ΅ΠΊΡΡ, ΡΠ΅ΠΌ ΡΠ΅ ΠΆΠ΅ ΡΠ°ΠΌΡΠ΅, ΠΏΠΎΡΡΡΠΎΠ΅Π½Π½ΡΠ΅ Π½Π° ΡΡΡΡΠΊΡΡΡΠ°Ρ .
ΠΡΠ»ΠΈ ΠΌΡ ΠΏΡΠΎΠ΄Π΅Π»ΡΠ²Π°Π΅ΠΌ Π²ΡΠ΅ ΡΠΏΠΎΠΌΡΠ½ΡΡΡΠ΅ Π²ΡΡΠ΅ Π΄Π΅ΠΉΡΡΠ²ΠΈΡ Π½Π°Π΄ Π½Π°ΡΠΈΠΌΠΈ ΠΎΠ±ΡΠ΅ΠΊΡΠ°ΠΌΠΈ (ΡΡΡΠ»ΠΊΠ°ΠΌΠΈ), ΡΠΎ Π²Π΅Π»ΠΈΠΊΠ° Π²Π΅ΡΠΎΡΡΠ½ΠΎΡΡΡ Π²ΠΎΠ·Π½ΠΈΠΊΠ½ΠΎΠ²Π΅Π½ΠΈΡ Π½Π΅ΠΏΡΠ΅Π΄Π²ΠΈΠ΄Π΅Π½Π½ΡΡ deadlockβs.
Π‘Π»ΠΎΠΆΠ½ΠΎΡΡΡ ΠΊΠΎΠ΄Π° ΠΈΠ·-Π·Π° ΡΡΠΎΠ³ΠΎ Π²ΠΎΠ·ΡΠ°ΡΡΠ°Π΅Ρ.
ΠΠΎΠ»ΡΡΠ΅ ΠΊΠΎΠ΄Π° = Π±ΠΎΠ»ΡΡΠ΅ Π±Π°Π³ΠΎΠ², Π²ΡΠ΅Π³Π΄Π°!
ΠΡΠ²ΠΎΠ΄Ρ
Π― ΠΏΠΎΠ΄ΡΠΌΠ°Π», ΡΡΠΎ Π²ΡΠ²ΠΎΠ΄Ρ Π² ΡΡΠΎΠΉ ΡΡΠ°ΡΡΠ΅ ΠΏΡΠΎΡΡΠΎ Π½Π΅ΠΎΠ±Ρ ΠΎΠ΄ΠΈΠΌΡ, ΠΏΠΎΡΠΎΠΌΡ ΡΡΠΎ ΡΠΈΡΠ°ΡΡ ΡΡΠ°ΡΡΡ ΠΈΠ· ΡΠ°Π·Π° Π² ΡΠ°Π· Π½Π΅ Ρ ΠΎΡΠ΅ΡΡΡ, ΠΈ ΡΠ²ΠΎΠ΄Π½ΡΠΉ ΠΏΠ΅ΡΠ΅ΡΠ΅Π½Ρ ΠΏΡΠ½ΠΊΡΠΎΠ² ΠΏΡΠΎΡΡΠΎ Π½Π΅ΠΎΠ±Ρ ΠΎΠ΄ΠΈΠΌ. ΠΠΎΠ΄Π²ΠΎΠ΄Ρ ΡΠ΅ΡΡΡ ΠΏΠΎΠ΄ ΡΠ΅ΡΡΠ°ΠΌΠΈ, Ρ ΠΎΡΠ΅ΡΡΡ Π²ΡΠ΄Π΅Π»ΠΈΡΡ ΡΠ»Π΅Π΄ΡΡΡΠ΅Π΅:
ΠΠ»Π°ΡΡΡ ΠΈΠ»ΠΈ ΡΡΡΡΠΊΡΡΡΡ, Π² ΡΠ΅ΠΌ ΠΎΡΠ»ΠΈΡΠΈΡ
Π§ΡΠΎΠ±Ρ Π»ΡΡΡΠ΅ ΠΏΠΎΠ½ΡΡΡ, ΠΊΠΎΠ³Π΄Π° ΠΈΡΠΏΠΎΠ»ΡΠ·ΠΎΠ²Π°ΡΡ ΠΊΠ»Π°ΡΡ ΠΈΠ»ΠΈ ΡΡΡΡΠΊΡΡΡΡ, ΡΠ°ΡΡΠΌΠΎΡΡΠΈΠΌ ΡΠ°Π·Π»ΠΈΡΠΈΡ ΠΌΠ΅ΠΆΠ΄Ρ ΡΡΡΡΠΊΡΡΡΠ°ΠΌΠΈ ΠΈ ΠΊΠ»Π°ΡΡΠ°ΠΌΠΈ. ΠΠΎΠΏΠΎΠ»Π½ΠΈΡΠ΅Π»ΡΠ½ΡΠΉ ΠΏΡΠΈΠΌΠ΅Ρ ΡΠΌ. Π·Π΄Π΅ΡΡ.
Π‘ΡΡΡΠΊΡΡΡΡ ΡΠΈΠ½ΡΠ°ΠΊΡΠΈΡΠ΅ΡΠΊΠΈ ΠΎΡΠ΅Π½Ρ ΠΏΠΎΡ ΠΎΠΆΠΈ Π½Π° ΠΊΠ»Π°ΡΡΡ, Π½ΠΎ ΡΡΡΠ΅ΡΡΠ²ΡΠ΅Ρ ΠΏΡΠΈΠ½ΡΠΈΠΏΠΈΠ°Π»ΡΠ½ΠΎΠ΅ ΠΎΡΠ»ΠΈΡΠΈΠ΅, ΠΊΠΎΡΠΎΡΠΎΠ΅ Π·Π°ΠΊΠ»ΡΡΠ°Π΅ΡΡΡ Π² ΡΠΎΠΌ, ΡΡΠΎ ΠΊΠ»Π°ΡΡ β ΡΠ²Π»ΡΠ΅ΡΡΡ ΡΡΡΠ»ΠΎΡΠ½ΡΠΌ ΡΠΈΠΏΠΎΠΌ (reference type), Π° ΡΡΡΡΠΊΡΡΡΡ β Π·Π½Π°ΡΠΈΠΌΡΠΌ ΡΠΈΠΏΠΎΠΌ (value type) (ΡΠΌ. ΡΡΠ°ΡΡΡ Β«Π’ΠΈΠΏΡ Π΄Π°Π½Π½ΡΡ Β«). Π‘Π»Π΅Π΄ΠΎΠ²Π°ΡΠ΅Π»ΡΠ½ΠΎ, ΠΊΠ»Π°ΡΡΡ Π²ΡΠ΅Π³Π΄Π° ΡΠΎΠ·Π΄Π°ΡΡΡΡ Π² ΡΠ°ΠΊ Π½Π°Π·ΡΠ²Π°Π΅ΠΌΠΎΠΉ βΠΊΡΡΠ΅β (heap), Π° ΡΡΡΡΠΊΡΡΡΡ ΡΠΎΠ·Π΄Π°ΡΡΡΡ Π² ΡΡΠ΅ΠΊΠ΅ (stack).
ΠΠΎ ΡΡΠΎ ΡΠΏΡΠ°Π²Π΅Π΄Π»ΠΈΠ²ΠΎ Π² ΠΎΡΠ΅Π½Ρ ΠΏΡΠΎΡΡΡΡ ΡΠ»ΡΡΠ°ΡΡ , Π³Π»Π°Π²Π½ΠΎΠ΅ ΠΎΡΠ»ΠΈΡΠΈΠ΅ ΡΡΡΡΠΊΡΡΡ ΠΈ ΠΊΠ»Π°ΡΡΠΎΠ²: ΡΡΡΡΠΊΡΡΡΡ, ΡΠΊΠ°Π·ΡΠ²Π°Π΅ΠΌΡΠ΅ Π² ΡΠΏΠΈΡΠΊΠ΅ ΠΏΠ°ΡΠ°ΠΌΠ΅ΡΡΠΎΠ² ΠΌΠ΅ΡΠΎΠ΄Π°, ΠΏΠ΅ΡΠ΅Π΄Π°ΡΡΡΡ ΠΏΠΎ Π·Π½Π°ΡΠ΅Π½ΠΈΡ (ΡΠΎ Π΅ΡΡΡ ΠΊΠΎΠΏΠΈΡΡΡΡΡΡ), ΠΎΠ±ΡΠ΅ΠΊΡΡ ΠΊΠ»Π°ΡΡΠΎΠ² β ΠΏΠΎ ΡΡΡΠ»ΠΊΠ΅. ΠΠΌΠ΅Π½Π½ΠΎ ΡΡΠΎ ΡΠ²Π»ΡΠ΅ΡΡΡ Π³Π»Π°Π²Π½ΡΠΌ ΡΠ°Π·Π»ΠΈΡΠΈΠ΅ΠΌ Π² ΠΈΡ ΠΏΠΎΠ²Π΅Π΄Π΅Π½ΠΈΠΈ, Π° Π½Π΅ ΡΠΎ, Π³Π΄Π΅ ΠΎΠ½ΠΈ Ρ ΡΠ°Π½ΡΡΡΡ. ΠΡΠΈΠΌΠ΅ΡΠ°Π½ΠΈΠ΅: ΡΡΡΡΠΊΡΡΡΡ ΡΠΎΠΆΠ΅ ΠΌΠΎΠΆΠ½ΠΎ ΠΏΠ΅ΡΠ΅Π΄Π°ΡΡ ΠΏΠΎ ΡΡΡΠ»ΠΊΠ΅, ΠΈΡΠΏΠΎΠ»ΡΠ·ΡΡ ΠΌΠΎΠ΄ΠΈΡΠΈΠΊΠ°ΡΠΎΡΡ out ΠΈ ref.
Π§Π΅ΠΌ Π±ΠΎΠ»ΡΡΠ΅ Π²Ρ Π±ΡΠ΄Π΅ΡΠ΅ ΠΈΡΠΏΠΎΠ»ΡΠ·ΠΎΠ²Π°ΡΡ ΡΡΡΡΠΊΡΡΡΡ Π²ΠΌΠ΅ΡΡΠΎ ΠΌΠ°Π»Π΅Π½ΡΠΊΠΈΡ ΠΊΠ»Π°ΡΡΠΎΠ², ΡΠ΅ΠΌ ΠΌΠ΅Π½Π΅Π΅ Π·Π°ΡΡΠ°ΡΠ½ΡΠΌ ΠΏΠΎ ΡΠ΅ΡΡΡΡΠ°ΠΌ Π±ΡΠ΄Π΅Ρ ΠΈΡΠΏΠΎΠ»ΡΠ·ΠΎΠ²Π°Π½ΠΈΠ΅ ΠΏΠ°ΠΌΡΡΠΈ.
Π’Π°ΠΊ ΠΆΠ΅ ΠΊΠ°ΠΊ ΠΈ ΠΊΠ»Π°ΡΡΡ, ΡΡΡΡΠΊΡΡΡΡ ΠΌΠΎΠ³ΡΡ ΠΈΠΌΠ΅ΡΡ ΠΏΠΎΠ»Ρ, ΠΌΠ΅ΡΠΎΠ΄Ρ ΠΈ ΠΊΠΎΠ½ΡΡΡΡΠΊΡΠΎΡΡ. Π ΠΊΠΎΠ½ΡΡΡΡΠΊΡΠΎΡΠ°Ρ ΡΡΡΡΠΊΡΡΡ ΡΠΆΠ΅ Π³ΠΎΠ²ΠΎΡΠΈΠ»ΠΎΡΡ, ΠΈΠ±ΠΎ ΡΡΠΎ Π²Π°ΠΆΠ½ΡΠΉ ΠΊΡΠΈΡΠ΅ΡΠΈΠΉ ΠΏΡΠΈ ΡΡΠ°Π²Π½ΠΈΠ²Π°Π½ΠΈΠΈ ΠΊΠ»Π°ΡΡΠΎΠ² ΠΈ ΡΡΡΡΠΊΡΡΡ.
ΠΡ Π²ΡΡΡΠ½ΠΈΠ»ΠΈ, ΡΡΠΎ Π²ΡΠ΅ Π²ΡΡΡΠΎΠ΅Π½Π½ΡΠ΅ ΡΠΈΠΏΡ Π·Π½Π°ΡΠ΅Π½ΠΈΠΉ Π·Π°Π΄Π°ΡΡΡΡ ΡΡΡΡΠΊΡΡΡΠ°ΠΌΠΈ, Π½Π°ΠΏΡΠΈΠΌΠ΅Ρ, ΡΠΈΡΠ»ΠΎΠ²ΡΠ΅ ΡΠΈΠΏΡ int, long, float ΠΎΠΏΡΠ΅Π΄Π΅Π»Π΅Π½Ρ ΡΡΡΡΠΊΡΡΡΠ°ΠΌΠΈ System.Int32, System.Int64 ΠΈ System.Single ΡΠΎΠΎΡΠ²Π΅ΡΡΡΠ²Π΅Π½Π½ΠΎ. ΠΡΠΈ ΡΡΡΡΠΊΡΡΡΡ ΠΈΠΌΠ΅ΡΡ ΠΏΠΎΠ»Ρ ΠΈ ΠΌΠ΅ΡΠΎΠ΄Ρ. ΠΡ ΡΠΆΠ΅ Π²ΡΠ·ΡΠ²Π°Π»ΠΈ ΠΌΠ΅ΡΠΎΠ΄Ρ Ρ ΠΏΠ΅ΡΠ΅ΠΌΠ΅Π½Π½ΡΡ ΡΡΠΈΡ ΡΠΈΠΏΠΎΠ². ΠΠ°ΠΏΡΠΈΠΌΠ΅Ρ, ΠΊΠ°ΠΆΠ΄Π°Ρ ΠΈΠ· ΠΏΠ΅ΡΠ΅ΡΠΈΡΠ»Π΅Π½Π½ΡΡ ΡΡΡΡΠΊΡΡΡ ΠΈΠΌΠ΅Π΅Ρ ΠΌΠ΅ΡΠΎΠ΄ ToString( ). Π’Π°ΠΊΠΆΠ΅ Ρ ΠΏΠ΅ΡΠ΅ΡΠΈΡΠ»Π΅Π½Π½ΡΡ ΡΡΡΡΠΊΡΡΡ Π΅ΡΡΡ ΡΡΠ°ΡΠΈΡΠ½ΡΠ΅ ΠΏΠΎΠ»Ρ, Π½Π°ΠΏΡΠΈΠΌΠ΅Ρ, Int32.MaxValue ΠΈΠ»ΠΈ Int32.MinValue. ΠΠΎΠ»ΡΡΠ°Π΅ΡΡΡ, ΡΡΠΎ ΠΌΡ ΡΠΆΠ΅ ΠΌΠ½ΠΎΠ³ΠΎΠΊΡΠ°ΡΠ½ΠΎ ΠΈΡΠΏΠΎΠ»ΡΠ·ΠΎΠ²Π°Π»ΠΈ ΡΡΡΡΠΊΡΡΡΡ.
Π ΠΎΡΠ»ΠΈΡΠΈΠ΅ ΠΎΡ ΠΊΠ»Π°ΡΡΠΎΠ², ΠΈΡΠΏΠΎΠ»ΡΠ·ΠΎΠ²Π°Π½ΠΈΠ΅ ΠΏΡΠ±Π»ΠΈΡΠ½ΡΡ ΠΏΠΎΠ»Π΅ΠΉ Π² ΡΡΡΡΠΊΡΡΡΠ°Ρ Π² Π±ΠΎΠ»ΡΡΠΈΠ½ΡΡΠ²Π΅ ΡΠ»ΡΡΠ°Π΅Π² Π½Π΅ ΡΠ΅ΠΊΠΎΠΌΠ΅Π½Π΄ΡΠ΅ΡΡΡ, ΠΏΠΎΡΠΎΠΌΡ ΡΡΠΎ Π½Π΅ ΡΡΡΠ΅ΡΡΠ²ΡΠ΅Ρ ΡΠΏΠΎΡΠΎΠ±Π° ΠΊΠΎΠ½ΡΡΠΎΠ»ΠΈΡΠΎΠ²Π°Π½ΠΈΡ Π·Π½Π°ΡΠ΅Π½ΠΈΠΉ Π² Π½ΠΈΡ . ΠΠ°ΠΏΡΠΈΠΌΠ΅Ρ, ΠΊΡΠΎ-Π»ΠΈΠ±ΠΎ ΠΌΠΎΠΆΠ΅Ρ ΡΡΡΠ°Π½ΠΎΠ²ΠΈΡΡ Π·Π½Π°ΡΠ΅Π½ΠΈΠ΅ ΠΌΠΈΠ½ΡΡ ΠΈΠ»ΠΈ ΡΠ΅ΠΊΡΠ½Π΄ Π±ΠΎΠ»Π΅Π΅ 60. ΠΠΎΠ»Π΅Π΅ ΠΏΡΠ°Π²ΠΈΠ»ΡΠ½ΡΠΉ Π²Π°ΡΠΈΠ°Π½Ρ Π² Π΄Π°Π½Π½ΠΎΠΌ ΡΠ»ΡΡΠ°Π΅ ΠΈΡΠΏΠΎΠ»ΡΠ·ΠΎΠ²Π°ΡΡ ΡΠ²ΠΎΠΉΡΡΠ²Π°, Π° Π² ΠΊΠΎΠ½ΡΡΡΡΠΊΡΠΎΡΠ΅ ΠΎΡΡΡΠ΅ΡΡΠ²ΠΈΡΡ ΠΏΡΠΎΠ²Π΅ΡΠΊΡ:
Π ΡΠ΅Π·ΡΠ»ΡΡΠ°ΡΠ΅ Π±ΡΠ΄Π΅Ρ Π½Π°ΠΏΠ΅ΡΠ°ΡΠ°Π½ΠΎ ΡΠΈΡΠ»ΠΎ ΡΠ°ΡΠΎΠ²: 6 (ΠΎΡΡΠ°ΡΠΎΠΊ ΠΎΡ Π΄Π΅Π»Π΅Π½ΠΈΡ 30 Π½Π° 24).
ΠΠ°ΠΌΠ΅Π½ΠΈΠΌ ΠΊΠΎΠ½ΡΡΡΡΠΊΡΠΎΡ Time(β¦) ΠΊΠΎΠ½ΡΡΡΡΠΊΡΠΎΡΠΎΠΌ Π±Π΅Π· ΠΏΠ°ΡΠ°ΠΌΠ΅ΡΡΠΎΠ²:
ΠΠΎΠ»ΡΡΠΈΠΌ ΡΠΎΠΎΠ±ΡΠ΅Π½ΠΈΠ΅ ΠΎΠ± ΠΎΡΠΈΠ±ΠΊΠ΅:
Β«Π‘ΡΡΡΠΊΡΡΡΡ Π½Π΅ ΠΌΠΎΠ³ΡΡ ΡΠΎΠ΄Π΅ΡΠΆΠ°ΡΡ ΡΠ²Π½ΡΡ
ΠΊΠΎΠ½ΡΡΡΡΠΊΡΠΎΡΠΎΠ² Π±Π΅Π· ΠΏΠ°ΡΠ°ΠΌΠ΅ΡΡΠΎΠ²Β»
ΠΡΠΈΡΠΈΠ½Π° Π²ΠΎΠ·Π½ΠΈΠΊΠ½ΠΎΠ²Π΅Π½ΠΈΡ ΠΎΡΠΈΠ±ΠΊΠΈ Π² ΡΠΎΠΌ, ΡΡΠΎ Π²Ρ Π½Π΅ ΠΌΠΎΠΆΠ΅ΡΠ΅ ΠΈΡΠΏΠΎΠ»ΡΠ·ΠΎΠ²Π°ΡΡ ΠΊΠΎΠ½ΡΡΡΡΠΊΡΠΎΡ ΠΏΠΎ ΡΠΌΠΎΠ»ΡΠ°Π½ΠΈΡ (Π±Π΅Π· ΠΏΠ°ΡΠ°ΠΌΠ΅ΡΡΠΎΠ²) Π΄Π»Ρ ΡΡΡΡΠΊΡΡΡΡ, ΠΏΠΎΡΠΎΠΌΡ ΡΡΠΎ ΠΊΠΎΠΌΠΏΠΈΠ»ΡΡΠΎΡ Π²ΡΠ΅Π³Π΄Π° Π³Π΅Π½Π΅ΡΠΈΡΡΠ΅Ρ Π΅Π³ΠΎ ΡΠ°ΠΌ.
Π§ΡΠΎ ΠΆΠ΅ ΠΊΠ°ΡΠ°Π΅ΡΡΡ ΠΊΠ»Π°ΡΡΠ°, ΡΠΎ ΠΊΠΎΠΌΠΏΠΈΠ»ΡΡΠΎΡ ΡΠΎΠ·Π΄Π°Π΅Ρ ΠΊΠΎΠ½ΡΡΡΡΠΊΡΠΎΡ ΠΏΠΎ ΡΠΌΠΎΠ»ΡΠ°Π½ΠΈΡ ΡΠΎΠ»ΡΠΊΠΎ Π² ΡΠΎΠΌ ΡΠ»ΡΡΠ°Π΅, Π΅ΡΠ»ΠΈ ΠΡ Π΅Π³ΠΎ Π½Π΅ ΡΠΎΠ·Π΄Π°Π»ΠΈ. ΠΡΠΈ ΠΎΠ±ΡΡΠ²Π»Π΅Π½ΠΈΠΈ ΠΊΠ»Π°ΡΡΠ° Π½Π΅Ρ ΠΏΡΠΎΠ±Π»Π΅ΠΌ ΡΠΎΠ·Π΄Π°ΡΡ ΡΠΎΠ±ΡΡΠ²Π΅Π½Π½ΡΠΉ ΠΊΠΎΠ½ΡΡΡΡΠΊΡΠΎΡ Π±Π΅Π· ΠΏΠ°ΡΠ°ΠΌΠ΅ΡΡΠΎΠ² (Π·Π°ΠΌΠ΅Π½ΠΈΡΠ΅ Π² ΠΏΡΠΎΠ³ΡΠ°ΠΌΠΌΠ΅ ΠΊΠ»ΡΡΠ΅Π²ΠΎΠ΅ ΡΠ»ΠΎΠ²ΠΎ struct Π½Π° class, Π²Ρ ΠΏΠΎΠ»ΡΡΠΈΡΠ΅ ΡΠ΅Π·ΡΠ»ΡΡΠ°Ρ β 7).
ΠΡΠ΅ ΠΎΠ΄ΠΈΠ½ ΡΠΊΡΠΏΠ΅ΡΠΈΠΌΠ΅Π½Ρ. ΠΠ°ΠΌΠ΅Π½ΠΈΡΠ΅ ΡΠ½ΠΎΠ²Π° class Π½Π° struct ΠΈ ΡΠ΄Π°Π»ΠΈΡΠ΅ ΠΏΠΎΠ»Π½ΠΎΡΡΡΡ ΠΊΠΎΠ½ΡΡΡΡΠΊΡΠΎΡ Time(). ΠΠ°ΠΏΡΡΡΠΈΡΠ΅ ΠΏΡΠΎΠ³ΡΠ°ΠΌΠΌΡ, ΠΎΠ½Π° Π±ΡΠ΄Π΅Ρ Π²ΡΠΏΠΎΠ»Π½Π΅Π½Π°, ΡΠ΅Π·ΡΠ»ΡΡΠ°Ρ β 0. ΠΡ ΠΏΠΎΠ»ΡΡΠΈΡΠ΅ ΡΡΠΈ ΠΏΡΠ΅Π΄ΡΠΏΡΠ΅ΠΆΠ΄Π΅Π½ΠΈΡ ΡΠΈΠΏΠ°:
Β«ΠΠΎΠ»Ρ Β«ConsoleApplication1.Time.hoursΒ» Π½ΠΈΠ³Π΄Π΅ Π½Π΅ ΠΏΡΠΈΡΠ²Π°ΠΈΠ²Π°Π΅ΡΡΡ Π·Π½Π°ΡΠ΅Π½ΠΈΠ΅, ΠΏΠΎΡΡΠΎΠΌΡ ΠΎΠ½ΠΎ Π²ΡΠ΅Π³Π΄Π° Π±ΡΠ΄Π΅Ρ ΠΈΠΌΠ΅ΡΡ Π·Π½Π°ΡΠ΅Π½ΠΈΠ΅ ΠΏΠΎ ΡΠΌΠΎΠ»ΡΠ°Π½ΠΈΡ 0Β».
ΠΡΠΎ ΠΎΠ·Π½Π°ΡΠ°Π΅Ρ, ΡΡΠΎ Π±ΡΠ» ΡΠ³Π΅Π½Π΅ΡΠΈΡΠΎΠ²Π°Π½ ΠΊΠΎΠ½ΡΡΡΡΠΊΡΠΎΡ (Π±Π΅Π· ΠΏΠ°ΡΠ°ΠΌΠ΅ΡΡΠΎΠ²) Π΄Π»Ρ ΡΡΡΡΠΊΡΡΡΡ, ΠΊΠΎΡΠΎΡΡΠΉ Π²ΡΠ΅Π³Π΄Π° ΡΡΡΠ°Π½Π°Π²Π»ΠΈΠ²Π°Π΅Ρ ΠΏΠΎΠ»Ρ Π² 0, false ΠΈΠ»ΠΈ null (Π΄Π»Ρ ΠΎΠ±ΡΠ΅ΠΊΡΠΎΠ²) β ΠΊΠ°ΠΊ ΠΈ Π΄Π»Ρ ΠΊΠ»Π°ΡΡΠΎΠ². ΠΠΎΡΡΠΎΠΌΡ ΠΡ ΠΌΠΎΠΆΠ΅ΡΠ΅ Π±ΡΡΡ ΡΠ²Π΅ΡΠ΅Π½Π½ΡΠΌΠΈ Π² ΡΠΎΠΌ, ΡΡΠΎ ΡΠΎΠ·Π΄Π°Π½Π½Π°Ρ ΡΡΡΡΠΊΡΡΡΠ° Π²ΡΠ΅Π³Π΄Π° Π±ΡΠ΄Π΅Ρ Π²Π΅ΡΡΠΈ ΡΠ΅Π±Ρ Π°Π΄Π΅ΠΊΠ²Π°ΡΠ½ΠΎ Π² ΡΠΎΠΎΡΠ²Π΅ΡΡΡΠ²ΠΈΠΈ ΡΠΎ Π·Π½Π°ΡΠ΅Π½ΠΈΡΠΌΠΈ ΠΏΠΎ ΡΠΌΠΎΠ»ΡΠ°Π½ΠΈΡ Π² ΠΈΡΠΏΠΎΠ»ΡΠ·ΡΠ΅ΠΌΡΡ ΡΠΈΠΏΠ°Ρ .
ΠΡΠ»ΠΈ ΠΡ Π½Π΅ Ρ ΠΎΡΠΈΡΠ΅ ΠΈΡΠΏΠΎΠ»ΡΠ·ΠΎΠ²Π°ΡΡ Π·Π½Π°ΡΠ΅Π½ΠΈΡ ΠΏΠΎ ΡΠΌΠΎΠ»ΡΠ°Π½ΠΈΡ, ΡΠΎ ΠΌΠΎΠΆΠ΅ΡΠ΅ ΠΈΠ½ΠΈΡΠΈΠ°Π»ΠΈΠ·ΠΈΡΠΎΠ²Π°ΡΡ ΠΏΠΎΠ»Ρ ΡΠ²ΠΎΠΈΠΌΠΈ Π·Π½Π°ΡΠ΅Π½ΠΈΡΠΌΠΈ Π² ΠΊΠΎΠ½ΡΡΡΡΠΊΡΠΎΡΠ΅ Ρ ΠΏΠ°ΡΠ°ΠΌΠ΅ΡΡΠ°ΠΌΠΈ Π΄Π»Ρ ΠΈΠ½ΠΈΡΠΈΠ°Π»ΠΈΠ·Π°ΡΠΈΠΈ.
ΠΠ΄Π½Π°ΠΊΠΎ Π΅ΡΠ»ΠΈ Π² ΡΡΠΎΠΌ ΠΊΠΎΠ½ΡΡΡΡΠΊΡΠΎΡΠ΅ Π½Π΅ Π±ΡΠ΄Π΅Ρ ΠΈΠ½ΠΈΡΠΈΠ°Π»ΠΈΠ·ΠΈΡΠΎΠ²Π°Π½ΠΎ ΠΊΠ°ΠΊΠΎΠ΅-Π½ΠΈΠ±ΡΠ΄Ρ Π·Π½Π°ΡΠ΅Π½ΠΈΠ΅, ΠΊΠΎΠΌΠΏΠΈΠ»ΡΡΠΎΡ Π½Π΅ Π±ΡΠ΄Π΅Ρ Π΅Π³ΠΎ ΠΈΠ½ΠΈΡΠΈΠ°Π»ΠΈΠ·ΠΈΡΠΎΠ²Π°ΡΡ ΠΈ ΠΏΠΎΠΊΠ°ΠΆΠ΅Ρ ΠΎΡΠΈΠ±ΠΊΡ.
ΠΠ²Π° ΠΏΡΠ°Π²ΠΈΠ»Π° ΡΡΡΡΠΊΡΡΡ
ΠΠ΅ΡΠ²ΠΎΠ΅ ΠΏΡΠ°Π²ΠΈΠ»ΠΎ ΡΡΡΡΠΊΡΡΡΡ: ΠΡΠ΅Π³Π΄Π° Π²ΡΠ΅ ΠΏΠ΅ΡΠ΅ΠΌΠ΅Π½Π½ΡΠ΅ Π΄ΠΎΠ»ΠΆΠ½Ρ Π±ΡΡΡ ΠΈΠ½ΠΈΡΠΈΠ°Π»ΠΈΠ·ΠΈΡΠΎΠ²Π°Π½Ρ.
Π ΠΊΠ»Π°ΡΡΠ°Ρ
ΠΡ ΠΌΠΎΠΆΠ΅ΡΠ΅ ΠΈΠ½ΠΈΡΠΈΠ°Π»ΠΈΠ·ΠΈΡΠΎΠ²Π°ΡΡ Π·Π½Π°ΡΠ΅Π½ΠΈΠ΅ ΠΏΠΎΠ»Π΅ΠΉ Π½Π΅ΠΏΠΎΡΡΠ΅Π΄ΡΡΠ²Π΅Π½Π½ΠΎ ΠΏΡΠΈ ΠΈΡ
ΠΎΠ±ΡΡΠ²Π»Π΅Π½ΠΈΠΈ. Π ΡΡΡΡΠΊΡΡΡΠ°Ρ
ΡΠ°ΠΊΠΎΠ³ΠΎ ΡΠ΄Π΅Π»Π°ΡΡ Π½Π΅Π»ΡΠ·Ρ, ΠΈ ΠΏΠΎΡΡΠΎΠΌΡ Π΄Π°Π½Π½ΡΠΉ ΠΊΠΎΠ΄ Π²ΡΠ·ΠΎΠ²Π΅Ρ ΠΎΡΠΈΠ±ΠΊΡ ΠΏΡΠΈ ΠΊΠΎΠΌΠΏΠΈΠ»ΡΡΠΈΠΈ. ΠΠΎΡΡΠΎΠΌΡ:
ΠΡΠΎΡΠΎΠ΅ ΠΏΡΠ°Π²ΠΈΠ»ΠΎ ΡΡΡΡΠΊΡΡΡΡ: ΠΠ΅Π»ΡΠ·Ρ ΠΈΠ½ΠΈΡΠΈΠ°Π»ΠΈΠ·ΠΈΡΠΎΠ²Π°ΡΡ ΠΏΠ΅ΡΠ΅ΠΌΠ΅Π½Π½ΡΠ΅ Π² ΡΠΎΠΌ ΠΌΠ΅ΡΡΠ΅, Π³Π΄Π΅ ΠΎΠ½ΠΈ ΠΎΠ±ΡΡΠ²Π»ΡΡΡΡΡ.
Π‘ΡΠ°Π²Π½Π΅Π½ΠΈΠ΅ ΠΊΠ»Π°ΡΡΠΎΠ² ΠΈ ΡΡΡΡΠΊΡΡΡ Π² ΡΠΆΠ°ΡΠΎΠΌ Π²ΠΈΠ΄Π΅:
| ΠΠΎΠΏΡΠΎΡ | Π‘ΡΡΡΠΊΡΡΡΠ° | ΠΠ»Π°ΡΡ |
| ΠΠ°ΠΊΠΎΠ³ΠΎ ΠΆΠ΅ ΡΠΈΠΏΠ° ΡΠΊΠ·Π΅ΠΌΠΏΠ»ΡΡ ΠΎΠ±ΡΠ΅ΠΊΡΠ°? | ΠΠ½Π°ΡΠΈΠΌΡΠΉ (value) ΡΠΈΠΏ | Π‘ΡΡΠ»ΠΎΡΠ½ΡΠΉ (reference) ΡΠΈΠΏ |
| ΠΠ΄Π΅ βΠΆΠΈΠ²ΡΡβ ΡΠΊΠ·Π΅ΠΌΠΏΠ»ΡΡΡ ΡΡΠΈΡ ΠΎΠ±ΡΠ΅ΠΊΡΠΎΠ²? | ΠΠΊΠ·Π΅ΠΌΠΏΠ»ΡΡΡ ΡΡΡΡΠΊΡΡΡΡ Π½Π°Π·ΡΠ²Π°ΡΡ Π·Π½Π°ΡΠ΅Π½ΠΈΡΠΌΠΈ ΠΈ βΠΆΠΈΠ²ΡΡβ ΠΎΠ½ΠΈ Π² ΡΡΠ΅ΠΊΠ΅ (stack). | ΠΠΊΠ·Π΅ΠΌΠΏΠ»ΡΡΡ ΠΊΠ»Π°ΡΡΠΎΠ² Π½Π°Π·ΡΠ²Π°ΡΡ ΠΎΠ±ΡΠ΅ΠΊΡΠ°ΠΌΠΈ ΠΈ βΠΆΠΈΠ²ΡΡβ ΠΎΠ½ΠΈ Π² ΠΊΡΡΠ΅ (heap). |
| ΠΠΎΠΆΠ½ΠΎ Π»ΠΈ ΡΠΎΠ·Π΄Π°ΡΡ ΠΊΠΎΠ½ΡΡΡΡΠΊΡΠΎΡ ΠΏΠΎ ΡΠΌΠΎΠ»ΡΠ°Π½ΠΈΡ? | ΠΠ΅Ρ | ΠΠ° |
| ΠΡΠ»ΠΈ ΡΠΎΠ·Π΄Π°Π΅ΡΡΡ ΡΠ²ΠΎΠΉ ΠΊΠΎΠ½ΡΡΡΡΠΊΡΠΎΡ, Π±ΡΠ΄Π΅Ρ Π»ΠΈ ΠΊΠΎΠΌΠΏΠΈΠ»ΡΡΠΎΡ Π³Π΅Π½Π΅ΡΠΈΡΠΎΠ²Π°ΡΡ ΠΊΠΎΠ½ΡΡΡΡΠΊΡΠΎΡ ΠΏΠΎ ΡΠΌΠΎΠ»ΡΠ°Π½ΠΈΡ? | ΠΠ° | ΠΠ΅Ρ |
| ΠΡΠ»ΠΈ Π² ΡΠ²ΠΎΡΠΌ ΠΊΠΎΠ½ΡΡΡΡΠΊΡΠΎΡΠ΅ Π½Π΅ Π±ΡΠ΄ΡΡ ΠΈΠ½ΠΈΡΠΈΠ°Π»ΠΈΠ·ΠΈΡΠΎΠ²Π°Π½Ρ Π½Π΅ΠΊΠΎΡΠΎΡΡΠ΅ ΠΏΠΎΠ»Ρ, Π±ΡΠ΄ΡΡ Π»ΠΈ ΠΎΠ½ΠΈ Π°Π²ΡΠΎΠΌΠ°ΡΠΈΡΠ΅ΡΠΊΠΈ ΠΈΠ½ΠΈΡΠΈΠ°Π»ΠΈΠ·ΠΈΡΠΎΠ²Π°Π½Ρ ΠΊΠΎΠΌΠΏΠΈΠ»ΡΡΠΎΡΠΎΠΌ? | ΠΠ΅Ρ | ΠΠ° |
| Π Π°Π·ΡΠ΅ΡΠ°Π΅ΡΡΡ Π»ΠΈ ΠΈΠ½ΠΈΡΠΈΠ°Π»ΠΈΠ·ΠΈΡΠΎΠ²Π°ΡΡ ΠΏΠ΅ΡΠ΅ΠΌΠ΅Π½Π½ΡΠ΅ ΡΠ°ΠΌ, Π³Π΄Π΅ ΠΈΡ ΠΎΠ±ΡΡΠ²Π»ΡΡΡ? | ΠΠ΅Ρ | ΠΠ |
ΠΠΎΠ»Ρ ΡΡΡΡΠΊΡΡΡΡ ΠΌΠΎΠ³ΡΡ Π±ΡΡΡ ΠΈΠ½ΠΈΡΠΈΠ°Π»ΠΈΠ·ΠΈΡΠΎΠ²Π°Π½Ρ ΠΏΡΠΈ ΠΈΡΠΏΠΎΠ»ΡΠ·ΠΎΠ²Π°Π½ΠΈΠΈ ΠΊΠΎΠ½ΡΡΡΡΠΊΡΠΎΡΠ° (Π΅ΡΠ»ΠΈ ΠΎΠ±ΡΠ΅ΠΊΡ ΠΎΠ±ΡΡΠ²Π»ΡΠ΅ΡΡΡ Ρ ΠΏΠΎΠΌΠΎΡΡΡ ΠΎΠΏΠ΅ΡΠ°ΡΠΎΡΠ° new), ΠΏΡΠΈΡΠ΅ΠΌ Π½Π΅ Π²Π°ΠΆΠ½ΠΎ, ΠΊΠ°ΠΊΠΎΠ³ΠΎ Β«ΡΠΎΠ±ΡΡΠ²Π΅Π½Π½ΠΎΠ³ΠΎΒ» ΠΈΠ»ΠΈ Β«ΠΏΠΎ ΡΠΌΠΎΠ»ΡΠ°Π½ΠΈΡΒ».
Π ΠΎΡΠΎΠ±Π΅Π½Π½ΠΎΡΡΡΠΌ ΡΡΡΡΠΊΡΡΡ ΠΌΠΎΠΆΠ½ΠΎ ΠΎΡΠ½Π΅ΡΡΠΈ Π΅ΡΠ΅ ΠΈ ΡΠΎΡ ΡΠ°ΠΊΡ, ΡΡΠΎ Π²ΡΠ»Π΅Π΄ΡΡΠ²ΠΈΠ΅ ΡΠΎΠ³ΠΎ, ΡΡΠΎ ΡΡΡΡΠΊΡΡΡΡ ΡΠ²Π»ΡΡΡΡΡ Π·Π½Π°ΡΠΈΠΌΡΠΌ ΡΠΈΠΏΠΎΠΌ, ΡΠΎ ΠΌΠΎΠΆΠ½ΠΎ ΡΠΎΠ·Π΄Π°ΡΡ ΡΡΡΡΠΊΡΡΡΡ Π±Π΅Π· ΠΈΡΠΏΠΎΠ»ΡΠ·ΠΎΠ²Π°Π½ΠΈΡ ΠΊΠΎΠ½ΡΡΡΡΠΊΡΠΎΡΠ°, Π½Π°ΠΏΡΠΈΠΌΠ΅Ρ:
Π ΡΠ°ΠΊΠΎΠΌ ΡΠ»ΡΡΠ°Π΅, ΠΏΠ΅ΡΠ΅ΠΌΠ΅Π½Π½Π°Ρ t ΡΠΎΠ·Π΄Π°Π΅ΡΡΡ, Π½ΠΎ ΠΏΠΎΠ»Ρ Π½Π΅ Π±ΡΠ΄ΡΡ ΠΈΠ½ΠΈΡΠΈΠ°Π»ΠΈΠ·ΠΈΡΠΎΠ²Π°Π½Ρ ΠΊΠΎΠ½ΡΡΡΡΠΊΡΠΎΡΠΎΠΌ (Π½Π΅Ρ ΠΎΠΏΠ΅ΡΠ°ΡΠΎΡΠ° Time t = new Time();). ΠΡΠ°Π²Π΄Π°, ΡΠ΅ΠΏΠ΅ΡΡ ΠΏΠΎΠ»Ρ ΡΡΡΡΠΊΡΡΡΡ ΠΏΡΠΈΠ΄Π΅ΡΡΡ ΠΎΠ±ΡΡΠ²Π»ΡΡΡ ΡΠΎΠ»ΡΠΊΠΎ Ρ ΠΌΠΎΠ΄ΠΈΡΠΈΠΊΠ°ΡΠΎΡΠΎΠΌ public.
ΠΠ°ΠΌΠ΅ΡΠ°Π½ΠΈΡ, Π½Π°Π΄ ΠΊΠΎΡΠΎΡΡΠΌΠΈ ΡΡΠΎΠΈΡ ΠΏΠΎΠ΄ΡΠΌΠ°ΡΡ (ΠΏΡΠΎΠ²Π΅ΡΠΈΡΡ ΠΏΡΠ°ΠΊΡΠΈΠΊΠΎΠΉ):
1. ΠΡΠΏΠΎΠ»ΡΠ·ΡΠΉΡΠ΅ ΡΡΡΡΠΊΡΡΡΡ, ΡΡΠΎ ΠΏΡΠΈΠ·Π½Π°ΠΊ Ρ ΠΎΡΠΎΡΠ΅Π³ΠΎ ΡΠΎΠ½Π° Π² ΠΏΡΠΎΠ³ΡΠ°ΠΌΠΌΠΈΡΠΎΠ²Π°Π½ΠΈΠΈ Π½Π° C#, Ρ ΠΎΡΡ Π½Π΅ΠΊΠΎΡΠΎΡΡΠ΅ Π°Π²ΡΠΎΡΡ Π½Π°ΠΎΠ±ΠΎΡΠΎΡ ΡΠ΅ΠΊΠΎΠΌΠ΅Π½Π΄ΡΡΡ ΠΊΠ°ΠΊ ΠΌΠΎΠΆΠ½ΠΎ ΠΌΠ΅Π½ΡΡΠ΅ ΠΈΡΠΏΠΎΠ»ΡΠ·ΠΎΠ²Π°ΡΡ ΡΡΡΡΠΊΡΡΡΡ, ΠΏΡΠ΅Π΄ΠΏΠΎΡΠΈΡΠ°Ρ ΠΊΠ»Π°ΡΡΡ.
2. ΠΠΎΠΏΠΎΠ»Π½Π΅Π½ΠΈΡ: ΡΡΡΡΠΊΡΡΡΡ Π½Π΅ ΠΌΠΎΠ³ΡΡ Π±ΡΡΡ Π°Π±ΡΡΡΠ°ΠΊΡΠ½ΡΠΌΠΈ, ΡΡΡΡΠΊΡΡΡΡ Π½Π΅ ΠΈΠΌΠ΅ΡΡ Π΄Π΅ΡΡΡΡΠΊΡΠΎΡΠΎΠ², ΡΡΡΡΠΊΡΡΡΡ Π½Π΅ ΠΏΠΎΠ΄Π΄Π΅ΡΠΆΠΈΠ²Π°ΡΡ Π½Π°ΡΠ»Π΅Π΄ΠΎΠ²Π°Π½ΠΈΠ΅.
3. ΠΠ»Π°Π²Π½ΠΎΠ΅ ΠΎΡΠ»ΠΈΡΠΈΠ΅ ΡΡΡΡΠΊΡΡΡ ΠΈ ΠΊΠ»Π°ΡΡΠΎΠ²: ΡΡΡΡΠΊΡΡΡΡ ΠΏΠ΅ΡΠ΅Π΄Π°ΡΡΡΡ ΠΏΠΎ Π·Π½Π°ΡΠ΅Π½ΠΈΡ (ΡΠΎ Π΅ΡΡΡ ΠΊΠΎΠΏΠΈΡΡΡΡΡΡ), ΠΎΠ±ΡΠ΅ΠΊΡΡ ΠΊΠ»Π°ΡΡΠΎΠ² β ΠΏΠΎ ΡΡΡΠ»ΠΊΠ΅. ΠΠΌΠ΅Π½Π½ΠΎ ΡΡΠΎ ΡΠ²Π»ΡΠ΅ΡΡΡ ΡΡΡΠ΅ΡΡΠ²Π΅Π½Π½ΡΠΌ ΡΠ°Π·Π»ΠΈΡΠΈΠ΅ΠΌ Π² ΠΈΡ ΠΏΠΎΠ²Π΅Π΄Π΅Π½ΠΈΠΈ, Π° Π½Π΅ ΡΠΎ, Π³Π΄Π΅ ΠΎΠ½ΠΈ Ρ ΡΠ°Π½ΡΡΡΡ.
4. Π‘ΡΡΡΠΊΡΡΡΡ ΡΠΎΠΆΠ΅ ΠΌΠΎΠΆΠ½ΠΎ ΠΏΠ΅ΡΠ΅Π΄Π°ΡΡ ΠΏΠΎ ΡΡΡΠ»ΠΊΠ΅, ΠΈΡΠΏΠΎΠ»ΡΠ·ΡΡ ΠΌΠΎΠ΄ΠΈΡΠΈΠΊΠ°ΡΠΎΡΡ out ΠΈ ref.
ΠΡΠ²Π΅Ρ: 400016 Π±Π°ΠΉΡ. ΠΠΎΠ½Π΅Ρ ΠΏΡΠΈΠΌΠ΅ΡΠ°Π½ΠΈΡ.
Π’Π΅ΠΏΠ΅ΡΡ ΠΏΠΎΡΠ»Π΅ ΠΎΠ±ΡΡΠΆΠ΄Π΅Π½ΠΈΡ ΡΡΡΡΠΊΡΡΡ ΠΏΠ΅ΡΠ΅ΠΉΠ΄Π΅ΠΌ ΠΊ ΡΠ°ΡΡΠΌΠΎΡΡΠ΅Π½ΠΈΡ ΠΌΠ°ΡΡΠΈΠ²ΠΎΠ² β Π²Π°ΠΆΠ½Π΅ΠΉΡΠΈΡ ΠΊΠΎΠ½ΡΡΡΡΠΊΡΠΈΠΉ Π΄Π°Π½Π½ΡΡ , Π²ΡΠ΅Π³Π΄Π° ΡΠ°Π·ΠΌΠ΅ΡΠ°Π΅ΠΌΡΡ Π² ΡΠΏΡΠ°Π²Π»ΡΠ΅ΠΌΠΎΠΉ ΠΊΡΡΠ΅ ΠΈ ΡΠ²Π»ΡΡΡΠΈΡ ΡΡ ΠΎΠ±ΡΠ΅ΠΊΡΠ°ΠΌΠΈ.
C# NET: Class vs Struct ΠΈΠ»ΠΈ Π² ΡΡΠΌ ΡΠ°Π·Π»ΠΈΡΠΈΡ ΠΌΠ΅ΠΆΠ΄Ρ ΠΠ»Π°ΡΡΠΎΠΌ ΠΈ Π‘ΡΡΡΠΊΡΡΡΠΎΠΉ
ΠΡΠΎΡΡΠΎ ΠΎ NET | ΡΠΎΠ·Π΄Π°Π½ΠΎ: 10.07.2011 | ΠΎΠΏΡΠ±Π»ΠΈΠΊΠΎΠ²Π°Π½ΠΎ: 10.07.2011 | ΠΎΠ±Π½ΠΎΠ²Π»Π΅Π½ΠΎ: 08.11.2021 | ΠΏΡΠΎΡΠΌΠΎΡΡΠΎΠ²: 89267 | ΠΊΠΎΠΌΠΌΠ΅Π½ΡΠ°ΡΠΈΠ΅Π²: 30
ΠΠ½Π΅ Π² ΠΏΠΎΡΠ»Π΅Π΄Π½Π΅Π΅ Π²ΡΠ΅ΠΌΡ ΠΎΡΠ΅Π½Ρ ΡΠ°ΡΡΠΎ Π²ΡΡΡΠ΅ΡΠ°ΡΡΡΡ ΠΏΡΠΎΠ³ΡΠ°ΠΌΠΌΠΈΡΡΡ, ΠΊΠΎΡΠΎΡΡΠ΅ Π½Π΅ ΡΠΎΠ»ΡΠΊΠΎ ΠΈΡΠΏΠΎΠ»ΡΠ·ΡΡΡ Π² ΠΎΠ±ΡΡΠ½ΠΎΠΉ βΠΏΡΠΎΠ³ΡΠ°ΠΌΠΌΠ½ΠΎΠΉβ ΠΆΠΈΠ·Π½ΠΈ ΡΡΡΡΠΊΡΡΡΡ (struct), Π½ΠΎ Π²ΠΎΠΎΠ±ΡΠ΅, Π½ΠΈΡΠ΅Π³ΠΎ Π½Π΅ Π·Π½Π°ΡΡ ΠΎΠ± ΡΡΠΎΠΌ ΠΎΠ±ΡΠ΅ΠΊΡΠ΅. Π Π·Π°ΡΠ°ΡΡΡΡ, Π΄Π»Ρ ΠΏΡΠΎΡΡΠΎΡΡ ΡΠ²ΠΎΠ΅ΠΉ “ΠΏΡΠΎΠ³ΡΠ°ΠΌΠΌΠ½ΠΎΠΉ” ΠΆΠΈΠ·Π½ΠΈ ΠΈΡΠΏΠΎΠ»ΡΠ·ΡΡΡ Π²ΡΠ΅Π³Π΄Π° ΠΊΠ»Π°ΡΡΡ (class). Π ΡΡΠΎΠΉ ΡΡΠ°ΡΡΠ΅ Ρ Π±Ρ Ρ ΠΎΡΠ΅Π» Π² ΠΎΡΠ΅ΡΠ΅Π΄Π½ΠΎΠΉ ΡΠ°Π· ΠΎΡΡΠ°Π½ΠΎΠ²ΠΈΡΡΡΡ Π½Π° ΡΠ°Π·Π»ΠΈΡΠΈΡΡ ΠΌΠ΅ΠΆΠ΄Ρ ΡΡΡΡΠΊΡΡΡΠ°ΠΌΠΈ ΠΈ ΠΊΠ»Π°ΡΡΠ°ΠΌΠΈ.
Π§ΡΠΎ ΡΠ°ΠΊΠΎΠ΅ struΡture?
ΠΠ»ΡΡΠ΅Π²ΠΎΠΉ ΠΌΠΎΠΌΠ΅Π½Ρ ΡΡΠ°ΡΡΠΈ: Π§Π΅ΠΌ Π±ΠΎΠ»ΡΡΠ΅ ΠΡ Π±ΡΠ΄Π΅ΡΠ΅ ΠΈΡΠΏΠΎΠ»ΡΠ·ΠΎΠ²Π°ΡΡ ΡΡΡΡΠΊΡΡΡΡ Π²ΠΌΠ΅ΡΡΠΎ Π½Π΅Π±ΠΎΠ»ΡΡΠΈΡ (Π½Π°Π²Π΅ΡΠ½ΠΎΠ΅, ΠΏΡΠ°Π²ΠΈΠ»ΡΠ½Π΅Π΅ Π±ΡΠ΄Π΅Ρ ΡΠΊΠ°Π·Π°ΡΡ β ΠΌΠ°Π»Π΅Π½ΡΠΊΠΈΡ ) ΠΊΠ»Π°ΡΡΠΎΠ², ΡΠ΅ΠΌ ΠΌΠ΅Π½Π΅Π΅ Π·Π°ΡΡΠ°ΡΠ½ΡΠΌ ΠΏΠΎ ΡΠ΅ΡΡΡΡΠ°ΠΌ Π±ΡΠ΄Π΅Ρ ΠΈΡΠΏΠΎΠ»ΡΠ·ΠΎΠ²Π°Π½ΠΈΠ΅ ΠΏΠ°ΠΌΡΡΠΈ. Π‘ΠΌΠ΅Ρ ΠΏΡΠ΅Π΄ΠΏΠΎΠ»ΠΎΠΆΠΈΡΡ, ΡΡΠΎ Π½Π΅ ΡΡΠ΅Π±ΡΠ΅ΡΡΡ ΠΎΠ±ΡΡΡΠ½Π΅Π½ΠΈΡ ΠΏΠΎΡΠ΅ΠΌΡβ¦ βΠΊΡΡΠ°β, βΡΠ±ΠΎΡΡΠΈΠΊ ΠΌΡΡΠΎΡΠ°β, βΠ½Π΅ΠΎΠΏΡΠ΅Π΄Π΅Π»Π΅Π½Π½ΡΠ΅ Π²ΡΠ΅ΠΌΠ΅Π½Π½ΡΠ΅ ΠΈΠ½ΡΠ΅ΡΠ²Π°Π»Ρ ΠΏΡΠΎΡ ΠΎΠ΄Π°β, ΡΠ»ΠΎΠΆΠ½ΠΎΡΡΡ βΡΡΡΠ½ΠΎΠ³ΠΎβ ΡΠΏΡΠ°Π²Π»Π΅Π½ΠΈΡ ΠΊΡΡΠ΅ΠΉ ΠΈ ΡΠ±ΠΎΡΡΠΈΠΊΠΎΠΌ ΠΌΡΡΠΎΡΠ°. ΠΡΠ΅ ΠΊΠ»ΡΡΠ΅Π²ΡΠ΅ ΠΌΠΎΠΌΠ΅Π½ΡΡ ΡΠΆΠ΅ ΠΏΠ΅ΡΠ΅ΡΠΈΡΠ»Π΅Π½Ρ.
Π’Π°ΠΊ ΠΆΠ΅ ΠΊΠ°ΠΊ ΠΈ ΠΊΠ»Π°ΡΡΡ, ΡΡΡΡΠΊΡΡΡΡ ΠΌΠΎΠ³ΡΡ ΠΈΠΌΠ΅ΡΡ ΠΏΠΎΠ»Ρ, ΠΌΠ΅ΡΠΎΠ΄Ρ ΠΈ ΠΊΠΎΠ½ΡΡΡΡΠΊΡΠΎΡΡ. Π₯ΠΎΡΡ ΠΏΡΠΎ ΠΊΠΎΠ½ΡΡΡΡΠΊΡΠΎΡΡ Π½Π°Π΄ΠΎ ΠΏΠΎΠ³ΠΎΠ²ΠΎΡΠΈΡΡ ΠΏΠΎΠ΄ΡΠΎΠ±Π½Π΅Π΅ (Π±ΡΠ΄Π΅Ρ Π΄Π°Π»ΡΡΠ΅ ΠΏΠΎ ΡΠ΅ΠΌΠ΅), ΠΈΠ±ΠΎ ΡΡΠΎ Π΅ΡΡΡ ΠΎΡΠ΅Π½Ρ Π²Π°ΠΆΠ½ΠΎΠ΅ ΠΏΠΎΠ½ΡΡΠΈΠ΅ ΠΏΡΠΈ ΡΡΠ°Π²Π½ΠΈΠ²Π°Π½ΠΈΠΈ ΠΊΠ»Π°ΡΡΠΎΠ² ΠΈ ΡΡΡΡΠΊΡΡΡ.
Π‘ΡΡΡΠΊΡΡΡΡ Π²ΡΠ΅Π³Π΄Π° Ρ ΠΠ°ΠΌΠΈΠΠ΅ Ρ ΠΎΡΠ΅ΡΡΡ Π΄ΡΠΌΠ°ΡΡ, ΡΡΠΎ ΡΠ»Π΅Π΄ΡΡΡΠ°Ρ ΠΈΠ½ΡΠΎΡΠΌΠ°ΡΠΈΡ, Π΄Π»Ρ ΠΠ°Ρ ΡΡΡΠΏΡΠΈΠ·ΠΎΠΌ. Π ΡΠ·ΡΠΊΠ΅ C# ΠΏΡΠΈΠΌΠΈΡΠΈΠ²Π½ΡΠ΅ ΡΠΈΡΠ»ΠΎΠ²ΡΠ΅ ΡΠΈΠΏΡ int, long, float ΡΠ²Π»ΡΡΡΡΡ Π°Π»ΡΡΡΠ°ΠΌΠΈ Π΄Π»Ρ ΡΡΡΡΠΊΡΡΡ System.Int32, System.Int64 ΠΈ System.Single ΡΠΎΠΎΡΠ²Π΅ΡΡΡΠ²Π΅Π½Π½ΠΎ. ΠΡΠΈ ΡΡΡΡΠΊΡΡΡΡ ΠΈΠΌΠ΅ΡΡ ΠΏΠΎΠ»Ρ ΠΈ ΠΌΠ΅ΡΠΎΠ΄Ρ. ΠΡ ΠΎΠ±ΡΡΠ½ΠΎ Π²ΡΠ·ΡΠ²Π°Π΅ΡΠ΅ ΠΌΠ΅ΡΠΎΠ΄Ρ Ρ ΠΏΠ΅ΡΠ΅ΠΌΠ΅Π½Π½ΡΡ Π΄Π°Π½Π½ΡΡ ΡΠΈΠΏΠΎΠ². ΠΠ°ΠΏΡΠΈΠΌΠ΅Ρ, ΠΊΠ°ΠΆΠ΄Π°Ρ ΠΈΠ· ΠΏΠ΅ΡΠ΅ΡΠΈΡΠ»Π΅Π½Π½ΡΡ ΡΡΡΡΠΊΡΡΡ ΠΈΠΌΠ΅Π΅Ρ ΠΌΠ΅ΡΠΎΠ΄ ToString. Π’Π°ΠΊΠΆΠ΅ Ρ ΠΏΠ΅ΡΠ΅ΡΠΈΡΠ»Π΅Π½Π½ΡΡ ΡΡΡΡΠΊΡΡΡ Π΅ΡΡΡ ΡΡΠ°ΡΠΈΡΠ½ΡΠ΅ ΠΏΠΎΠ»Ρ, Π½Π°ΠΏΡΠΈΠΌΠ΅Ρ, Int32.MaxValue ΠΈΠ»ΠΈ Int32.MinValue. ΠΠΎΠ»ΡΡΠ°Π΅ΡΡΡ, ΡΡΠΎ ΠΡ ΡΠΆΠ΅ Π² ΠΏΠΎΠ²ΡΠ΅Π΄Π½Π΅Π²Π½ΠΎΠΉ “ΠΏΡΠΎΠ³ΡΠ°ΠΌΠΌΠ½ΠΎΠΉ” ΠΆΠΈΠ·Π½ΠΈ ΠΈΡΠΏΠΎΠ»ΡΠ·ΡΠ΅ΡΠ΅ ΡΡΡΡΠΊΡΡΡΡ, Π° Π·Π½Π°ΡΠΈΡ Π·Π½Π°ΠΊΠΎΠΌΡ Ρ Π½ΠΈΠΌΠΈ.
Π’Π°Π±Π»ΠΈΡΠ° ΠΊΠ»Π°ΡΡΠΎΠ² ΠΈ ΡΡΡΡΠΊΡΡΡ Π² Microsoft. NET Framework
Π ΡΠ°Π±Π»ΠΈΡΠ΅ ΡΠΊΠ°Π·Π°Π½Ρ Π°Π»ΡΡΡΡ ΠΈ ΡΠΎΠΎΡΠ²Π΅ΡΡΡΠ²ΡΡΡΠΈΠ΅ ΠΈΠΌ ΡΠΈΠΏΡ, Π° ΡΠ°ΠΊΠΆΠ΅ Π΄Π°Π½Π° ΠΈΠ½ΡΠΎΡΠΌΠ°ΡΠΈΡ ΠΎ ΠΏΡΠ΅Π΄ΡΡΠ°Π²Π»ΡΡΡΠ΅ΠΌ ΡΠΈΠΏΠ΅ (ΡΡΡΡΠΊΡΡΡΠ° ΠΈΠ»ΠΈ ΠΊΠ»Π°ΡΡ).
| Keyword | Type equivalent | Class or structure |
|---|---|---|
| bool | System.Boolean | Structure |
| byte | System.Byte | Structure |
| decimal | System.Decimal | Structure |
| double | System.Double | Structure |
| float | System.Single | Structure |
| int | System.Int32 | Structure |
| long | System.Int64 | Structure |
| object | System.Object | Class |
| sbyte | System.SByte | Structure |
| short | System.Int16 | Structure |
| string | System.String | Class |
| uint | System.UInt32 | Structure |
| ulong | System.UInt64 | Structure |
| ushort | System.UInt16 | Structure |
ΠΠ±ΡΡΠ²Π»Π΅Π½ΠΈΠ΅ ΡΡΡΡΠΊΡΡΡ
ΠΠ»Ρ ΠΎΠ±ΡΡΠ²Π»Π΅Π½ΠΈΡ ΡΡΡΡΠΊΡΡΡΡ ΠΈΡΠΏΠΎΠ»ΡΠ·ΡΠ΅ΡΡΡ Π·Π°ΡΠ΅Π·Π΅ΡΠ²ΠΈΡΠΎΠ²Π°Π½Π½ΠΎΠ΅ ΡΠ»ΠΎΠ²ΠΎ struct, ΡΠ»Π΅Π΄ΠΎΠΌ Π½Π°ΠΈΠΌΠ΅Π½ΠΎΠ²Π°Π½ΠΈΠ΅ ΡΡΡΡΠΊΡΡΡΡ ΠΈ ΡΠΈΠ³ΡΡΠ½ΡΠ΅ ΡΠΊΠΎΠ±ΠΊΠΈ:
ΠΡΡΠ°ΡΠΈ, β¦ΠΠΎ ΡΠΌΠΎΠ»ΡΠ°Π½ΠΈΡ, ΠΡ Π½Π΅ ΠΌΠΎΠΆΠ΅ΡΠ΅ ΠΈΡΠΏΠΎΠ»ΡΠ·ΠΎΠ²Π°ΡΡ Π½Π΅ΠΊΠΎΡΠΎΡΡΠ΅ ΠΎΠ±ΡΠΈΠ΅ ΠΎΠΏΠ΅ΡΠ°ΡΠΎΡΡ Π² ΠΠ°ΡΠΈΡ ΡΡΡΡΠΊΡΡΡΠ°Ρ . ΠΠ°ΠΏΡΠΈΠΌΠ΅Ρ, ΠΡ Π½Π΅ ΠΌΠΎΠΆΠ΅ΡΠ΅ ΠΈΡΠΏΠΎΠ»ΡΠ·ΠΎΠ²Π°ΡΡ ΠΎΠΏΠ΅ΡΠ°ΡΠΎΡ ΡΡΠ°Π²Π½Π΅Π½ΠΈΡ (==) ΠΈ ΠΏΡΠΎΡΠΈΠ²ΠΎΠΏΠΎΠ»ΠΎΠΆΠ½ΡΠ΅ Π΅ΠΌΡ (!=) Π½Π° ΡΠ²ΠΎΠΈΡ ΡΡΡΡΠΊΡΡΡΠ°Ρ . ΠΠ΄Π½Π°ΠΊΠΎ, ΠΡ ΠΌΠΎΠΆΠ΅ΡΠ΅ ΡΠ²Π½ΠΎ ΠΎΠ±ΡΡΠ²ΠΈΡΡ ΠΈ ΡΠ΅Π°Π»ΠΈΠ·ΠΎΠ²Π°ΡΡ ΠΎΠΏΠ΅ΡΠ°ΡΠΎΡΡ Π΄Π»Ρ ΡΠ²ΠΎΠΈΡ ΡΡΡΡΠΊΡΡΡ.
Π Π² ΡΠ΅ΠΌ ΠΆΠ΅ ΡΠ°Π·Π½ΠΈΡΠ° ΠΌΠ΅ΠΆΠ΄Ρ ΡΡΡΡΠΊΡΡΡΠ°ΠΌΠΈ ΠΈ ΠΊΠ»Π°ΡΡΠ°ΠΌΠΈ
ΠΠ°Π²Π°ΠΉΡΠ΅ ΡΠ°ΡΡΠΌΠΎΡΡΠΈΠΌ ΠΏΡΠΈΠΌΠ΅Ρ, Π² ΠΊΠΎΡΠΎΡΠΎΠΌ ΡΠΆΠ΅ Π·Π°Π»ΠΎΠΆΠ΅Π½Π° ΠΎΡΠΈΠ±ΠΊΠ°:
ΠΡΠΈΡΠΈΠ½Π° Π²ΠΎΠ·Π½ΠΈΠΊΠ½ΠΎΠ²Π΅Π½ΠΈΠΈ ΠΎΡΠΈΠ±ΠΊΠΈ Π² ΡΠΎΠΌ, ΡΡΠΎ ΠΡ Π½Π΅ ΠΌΠΎΠΆΠ΅ΡΠ΅ ΠΈΡΠΏΠΎΠ»ΡΠ·ΠΎΠ²Π°ΡΡ ΠΊΠΎΠ½ΡΡΡΡΠΊΡΠΎΡ ΠΏΠΎ ΡΠΌΠΎΠ»ΡΠ°Π½ΠΈΡ (Π±Π΅Π· ΠΏΠ°ΡΠ°ΠΌΠ΅ΡΡΠΎΠ²) Π΄Π»Ρ ΡΡΡΡΠΊΡΡΡΡ, ΠΏΠΎΡΠΎΠΌΡ ΡΡΠΎ ΠΊΠΎΠΌΠΏΠΈΠ»ΡΡΠΎΡ Π²ΡΠ΅Π³Π΄Π° Π³Π΅Π½Π΅ΡΠΈΡΡΠ΅Ρ Π΅Π³ΠΎ ΡΠ°ΠΌ. Π§ΡΠΎ ΠΆΠ΅ ΠΊΠ°ΡΠ°Π΅ΡΡΡ ΠΊΠ»Π°ΡΡΠ°, ΡΠΎ ΠΊΠΎΠΌΠΏΠΈΠ»ΡΡΠΎΡ ΡΠΎΠ·Π΄Π°Π΅Ρ ΠΊΠΎΠ½ΡΡΡΡΠΊΡΠΎΡ ΠΏΠΎ ΡΠΌΠΎΠ»ΡΠ°Π½ΠΈΡ, ΡΠΎΠ»ΡΠΊΠΎ Π² ΡΠΎΠΌ ΡΠ»ΡΡΠ°Π΅, Π΅ΡΠ»ΠΈ ΠΡ Π΅Π³ΠΎ Π½Π΅ ΡΠΎΠ·Π΄Π°Π»ΠΈ. Π‘Π³Π΅Π½Π΅ΡΠΈΡΠΎΠ²Π°Π½Π½ΡΠΉ ΠΊΠΎΠ½ΡΡΡΡΠΊΡΠΎΡ Π΄Π»Ρ ΡΡΡΡΠΊΡΡΡΡ Π²ΡΠ΅Π³Π΄Π° ΡΡΡΠ°Π½Π°Π²Π»ΠΈΠ²Π°Π΅Ρ ΠΏΠΎΠ»Ρ Π² 0, false ΠΈΠ»ΠΈ null β ΠΊΠ°ΠΊ ΠΈ Π΄Π»Ρ ΠΊΠ»Π°ΡΡΠΎΠ². ΠΠΎΡΡΠΎΠΌΡ ΠΡ ΠΌΠΎΠΆΠ΅ΡΠ΅ Π±ΡΡΡ ΡΠ²Π΅ΡΠ΅Π½Π½ΡΠΌΠΈ Π² ΡΠΎΠΌ, ΡΡΠΎ ΡΠΎΠ·Π΄Π°Π½Π½Π°Ρ ΡΡΡΡΠΊΡΡΡΠ° Π²ΡΠ΅Π³Π΄Π° Π±ΡΠ΄Π΅Ρ Π²Π΅ΡΡΠΈ ΡΠ΅Π±Ρ βΠ°Π΄Π΅ΠΊΠ²Π°ΡΠ½ΠΎβ Π² ΡΠΎΠΎΡΠ²Π΅ΡΡΡΠ²ΠΈΠΈ ΡΠΎ Π·Π½Π°ΡΠ΅Π½ΠΈΡΠΌΠΈ ΠΏΠΎ ΡΠΌΠΎΠ»ΡΠ°Π½ΠΈΡ Π² ΠΈΡΠΏΠΎΠ»ΡΠ·ΡΠ΅ΠΌΡΡ ΡΠΈΠΏΠ°Ρ . ΠΡΠ»ΠΈ ΠΡ Π½Π΅ Ρ ΠΎΡΠΈΡΠ΅ ΠΈΡΠΏΠΎΠ»ΡΠ·ΠΎΠ²Π°ΡΡ Π·Π½Π°ΡΠ΅Π½ΠΈΡ ΠΏΠΎ ΡΠΌΠΎΠ»ΡΠ°Π½ΠΈΡ, ΠΡ ΠΌΠΎΠΆΠ΅ΡΠ΅ ΠΈΠ½ΠΈΡΠΈΠ°Π»ΠΈΠ·ΠΈΡΠΎΠ²Π°ΡΡ ΠΏΠΎΠ»Ρ ΡΠ²ΠΎΠΈΠΌΠΈ Π·Π½Π°ΡΠ΅Π½ΠΈΡΠΌΠΈ Π² ΠΊΠΎΠ½ΡΡΡΡΠΊΡΠΎΡΠ΅ Ρ ΠΏΠ°ΡΠ°ΠΌΠ΅ΡΡΠ°ΠΌΠΈ Π΄Π»Ρ ΠΈΠ½ΠΈΡΠΈΠ°Π»ΠΈΠ·Π°ΡΠΈΠΈ. ΠΠ΄Π½Π°ΠΊΠΎ, Π΅ΡΠ»ΠΈ Π² ΡΡΠΎΠΌ ΠΊΠΎΠ½ΡΡΡΡΠΊΡΠΎΡΠ΅ Π½Π΅ Π±ΡΠ΄Π΅Ρ ΠΈΠ½ΠΈΡΠΈΠ°Π»ΠΈΠ·ΠΈΡΠΎΠ²Π°Π½ΠΎ ΠΊΠ°ΠΊΠΎΠ΅-Π½ΠΈΠ±ΡΠ΄Ρ Π·Π½Π°ΡΠ΅Π½ΠΈΠ΅, ΠΊΠΎΠΌΠΏΠΈΠ»ΡΡΠΎΡ Π½Π΅ Π±ΡΠ΄Π΅Ρ Π΅Π³ΠΎ ΠΈΠ½ΠΈΡΠΈΠ°Π»ΠΈΠ·ΠΈΡΠΎΠ²Π°ΡΡ Π·Π° ΠΠ°Ρ ΠΈ ΠΏΠΎΠΊΠ°ΠΆΠ΅Ρ ΠΎΡΠΈΠ±ΠΊΡ.
ΠΠ΅ΡΠ²ΠΎΠ΅ ΠΏΡΠ°Π²ΠΈΠ»ΠΎ Π‘ΡΡΡΠΊΡΡΡΡ: ΠΡΠ΅Π³Π΄Π° Π²ΡΠ΅ ΠΏΠ΅ΡΠ΅ΠΌΠ΅Π½Π½ΡΠ΅ Π΄ΠΎΠ»ΠΆΠ½Ρ Π±ΡΡΡ ΠΈΠ½ΠΈΡΠΈΠ°Π»ΠΈΠ·ΠΈΡΠΎΠ²Π°Π½Ρ!
Π ΠΊΠ»Π°ΡΡΠ°Ρ ΠΡ ΠΌΠΎΠΆΠ΅ΡΠ΅ ΠΈΠ½ΠΈΡΠΈΠ°Π»ΠΈΠ·ΠΈΡΠΎΠ²Π°ΡΡ Π·Π½Π°ΡΠ΅Π½ΠΈΠ΅ ΠΏΠΎΠ»Π΅ΠΉ Π½Π΅ΠΏΠΎΡΡΠ΅Π΄ΡΡΠ²Π΅Π½Π½ΠΎ Π² ΠΌΠ΅ΡΡΠ΅ ΠΈΡ ΠΎΠ±ΡΡΠ²Π»Π΅Π½ΠΈΡ. Π ΡΡΡΡΠΊΡΡΡΠ°Ρ ΡΠ°ΠΊΠΎΠ³ΠΎ ΡΠ΄Π΅Π»Π°ΡΡ Π½Π΅ ΠΏΠΎΠ»ΡΡΠΈΡΡΡ, ΠΈ ΠΏΠΎΡΡΠΎΠΌΡ Π΄Π°Π½Π½ΡΠΉ ΠΊΠΎΠ΄ Π²ΡΠ·ΠΎΠ²Π΅Ρ ΠΎΡΠΈΠ±ΠΊΡ ΠΏΡΠΈ ΠΊΠΎΠΌΠΏΠΈΠ»ΡΡΠΈΠΈ:
ΠΡΠΎΡΠΎΠ΅ ΠΏΡΠ°Π²ΠΈΠ»ΠΎ Π‘ΡΡΡΠΊΡΡΡΡ: ΠΠ΅Π»ΡΠ·Ρ ΠΈΠ½ΠΈΡΠΈΠ°Π»ΠΈΠ·ΠΈΡΠΎΠ²Π°ΡΡ ΠΏΠ΅ΡΠ΅ΠΌΠ΅Π½Π½ΡΠ΅ Π² ΠΌΠ΅ΡΡΠ΅ ΠΈΡ ΠΎΠ±ΡΡΠ²Π»Π΅Π½ΠΈΡ!
ΠΠ°Π½Π½Π°Ρ ΡΠ°Π±Π»ΠΈΡΠ° Π² Π½Π΅ΠΊΠΎΡΠΎΡΠΎΠΌ ΡΠΎΠ΄Π΅ ΠΏΠΎΠ΄ΡΡΠΎΠΆΠΈΠ²Π°Π΅Ρ Π²ΡΡ Π²ΡΡΠ΅ΡΠΊΠ°Π·Π°Π½Π½ΠΎΠ΅ ΠΈ ΠΎΡΠΎΠ±ΡΠ°ΠΆΠ°Π΅Ρ ΠΎΡΠ½ΠΎΠ²Π½ΡΠ΅ ΠΎΡΠ»ΠΈΡΠΈΡ ΠΌΠ΅ΠΆΠ΄Ρ ΠΊΠ»Π°ΡΡΠ°ΠΌΠΈ ΠΈ ΡΡΡΡΠΊΡΡΡΠ°ΠΌΠΈ.
| ΠΠΎΠΏΡΠΎΡ | Π‘ΡΡΡΠΊΡΡΡΠ° | ΠΠ»Π°ΡΡ |
| Π ΠΊΠ°ΠΊΠΎΠ³ΠΎ ΠΆΠ΅ ΡΠΈΠΏΠ° ΡΠΊΠ·Π΅ΠΌΠΏΠ»ΡΡ ΠΎΠ±ΡΠ΅ΠΊΡΠ°? | Π‘ΡΡΡΠΊΡΡΡΠ° Π·Π½Π°ΡΠΈΠΌΡΠΉ (value) ΡΠΈΠΏ | ΠΠ»Π°ΡΡ ΡΡΡΠ»ΠΎΡΠ½ΡΠΉ (reference) ΡΠΈΠΏ |
| Π Π³Π΄Π΅ βΠΆΠΈΠ²ΡΡβ ΡΠΊΠ·Π΅ΠΌΠΏΠ»ΡΡΡ ΡΡΠΈΡ ΠΎΠ±ΡΠ΅ΠΊΡΠΎΠ²? | ΠΠΊΠ·Π΅ΠΌΠΏΠ»ΡΡΡ ΡΡΡΡΠΊΡΡΡΡ Π½Π°Π·ΡΠ²Π°ΡΡ Π·Π½Π°ΡΠ΅Π½ΠΈΡΠΌΠΈ ΠΈ βΠΆΠΈΠ²ΡΡβ ΠΎΠ½ΠΈ Π² ΡΡΠ΅ΠΊΠ΅ (stack). | ΠΠΊΠ·Π΅ΠΌΠΏΠ»ΡΡΡ ΠΊΠ»Π°ΡΡΠΎΠ² Π½Π°Π·ΡΠ²Π°ΡΡ ΠΎΠ±ΡΠ΅ΠΊΡΠ°ΠΌΠΈ ΠΈ βΠΆΠΈΠ²ΡΡβ ΠΎΠ½ΠΈ Π² ΠΊΡΡΠ΅ (heap). |
| ΠΠΎΠΆΠ½ΠΎ Π»ΠΈ ΡΠΎΠ·Π΄Π°ΡΡ ΠΊΠΎΠ½ΡΡΡΡΠΊΡΠΎΡ ΠΏΠΎ ΡΠΌΠΎΠ»ΡΠ°Π½ΠΈΡ? | ΠΠ΅Ρ | ΠΠ° |
| ΠΡΠ»ΠΈ ΡΠΎΠ·Π΄Π°Π΅ΡΡΡ ΡΠ²ΠΎΠΉ ΠΊΠΎΠ½ΡΡΡΡΠΊΡΠΎΡ Π±ΡΠ΄Π΅Ρ Π»ΠΈ ΠΊΠΎΠΌΠΏΠΈΠ»ΡΡΠΎΡ Π³Π΅Π½Π΅ΡΠΈΡΠΎΠ²Π°ΡΡ ΠΊΠΎΠ½ΡΡΡΡΠΊΡΠΎΡ ΠΏΠΎ ΡΠΌΠΎΠ»ΡΠ°Π½ΠΈΡ? | ΠΠ° | ΠΠ΅Ρ |
| ΠΡΠ»ΠΈ Π² ΡΠ²ΠΎΡΠΌ ΠΊΠΎΠ½ΡΡΡΡΠΊΡΠΎΡΠ΅ Π½Π΅ Π±ΡΠ΄ΡΡ ΠΈΠ½ΠΈΡΠΈΠ°Π»ΠΈΠ·ΠΈΡΠΎΠ²Π°Π½Ρ Π½Π΅ΠΊΠΎΡΠΎΡΡΠ΅ ΠΏΠΎΠ»Ρ, Π±ΡΠ΄ΡΡ Π»ΠΈ ΠΎΠ½ΠΈ Π°Π²ΡΠΎΠΌΠ°ΡΠΈΡΠ΅ΡΠΊΠΈ ΠΈΠ½ΠΈΡΠΈΠ°Π»ΠΈΠ·ΠΈΡΠΎΠ²Π°Π½Ρ ΠΊΠΎΠΌΠΏΠΈΠ»ΡΡΠΎΡΠΎΠΌ? | ΠΠ΅Ρ | ΠΠ° |
| Π Π°Π·ΡΠ΅ΡΠ°Π΅ΡΡΡ Π»ΠΈ ΠΈΠ½ΠΈΡΠΈΠ°Π»ΠΈΠ·ΠΈΡΠΎΠ²Π°ΡΡ ΠΏΠ΅ΡΠ΅ΠΌΠ΅Π½Π½ΡΠ΅ Π² ΠΌΠ΅ΡΡΠ΅ ΠΈΡ ΠΎΠ±ΡΡΠ²Π»Π΅Π½ΠΈΡ? | ΠΠ΅Ρ | ΠΠ° |
ΠΡΠΏΠΎΠ»ΡΠ·ΠΎΠ²Π°Π½ΠΈΠ΅ ΡΡΡΡΠΊΡΡΡ ΠΊΠ°ΠΊ ΠΏΠ΅ΡΠ΅ΠΌΠ΅Π½Π½ΡΡ
ΠΠΎΡΠ»Π΅ ΡΠΎΠ³ΠΎ ΠΊΠ°ΠΊ ΠΡ ΡΠΎΠ·Π΄Π°Π»ΠΈ ΡΡΡΡΠΊΡΡΡΡ, ΠΡ ΠΌΠΎΠΆΠ΅ΡΠ΅ ΠΈΡΠΏΠΎΠ»ΡΠ·ΠΎΠ²Π°ΡΡ Π΅Π΅ ΡΠ°ΠΊΠΆΠ΅ ΠΊΠ°ΠΊ ΠΊΠ»Π°ΡΡΡ ΠΈ Π΄ΡΡΠ³ΠΈΠ΅ ΡΠΈΠΏΡ. ΠΠ°ΠΏΡΠΈΠΌΠ΅Ρ, ΡΠΎΠ·Π΄Π°Π² ΡΡΡΡΠΊΡΡΡΡ Time, Ρ ΠΌΠΎΠ³Ρ ΠΈΡΠΏΠΎΠ»ΡΠ·ΠΎΠ²Π°ΡΡ Π΅Π΅ Π² ΠΊΠ»Π°ΡΡΠ΅:
ΠΡ ΠΌΠΎΠΆΠ΅ΡΠ΅ ΡΠΎΠ·Π΄Π°Π²Π°ΡΡ nullable Π²Π΅ΡΡΠΈΡ ΠΏΠ΅ΡΠ΅ΠΌΠ΅Π½Π½ΠΎΠΉ ΡΠΈΠΏΠ° ΡΡΡΡΠΊΡΡΡΡ ΠΈΡΠΏΠΎΠ»ΡΠ·ΡΡ ΠΌΠΎΠ΄ΠΈΡΠΈΠΊΠ°ΡΠΎΡ β?β ΠΈ ΠΏΠΎΡΠΎΠΌ ΠΏΡΠΈΡΠ²ΠΎΠΈΡΡ Π΅ΠΉ Π·Π½Π°ΡΠ΅Π½ΠΈΠ΅ null:
Time? currentTime = null;
ΠΠ½ΠΈΡΠΈΠ°Π»ΠΈΠ·Π°ΡΠΈΡ ΡΡΡΡΠΊΡΡΡ
Π ΡΡΠ°ΡΡΠ΅ Ρ Π½Π΅ ΡΠ°Π· Π³ΠΎΠ²ΠΎΡΠΈΠ», ΡΡΠΎ ΠΏΠΎΠ»Ρ ΡΡΡΡΠΊΡΡΡΡ ΠΌΠΎΠ³ΡΡ Π±ΡΡΡ ΠΈΠ½ΠΈΡΠΈΠ°Π»ΠΈΠ·ΠΈΡΠΎΠ²Π°Π½Ρ ΠΏΡΠΈ ΠΈΡΠΏΠΎΠ»ΡΠ·ΠΎΠ²Π°Π½ΠΈΡ ΠΊΠΎΠ½ΡΡΡΡΠΊΡΠΎΡΠ°, ΠΏΡΠΈΡΠ΅ΠΌ Π½Π΅ Π²Π°ΠΆΠ½ΠΎ ΠΊΠ°ΠΊΠΎΠ³ΠΎ βΡΠΎΠ±ΡΡΠ²Π΅Π½Π½ΠΎΠ³ΠΎβ ΠΈΠ»ΠΈ βΠΏΠΎ ΡΠΌΠΎΠ»ΡΠ°Π½ΠΈΡβ. Π ΠΎΡΠΎΠ±Π΅Π½Π½ΠΎΡΡΡΠΌ ΡΡΡΡΠΊΡΡΡ ΠΌΠΎΠΆΠ½ΠΎ ΠΎΡΠ½Π΅ΡΡΠΈ Π΅ΡΠ΅ ΠΈ ΡΠΎΡ ΡΠ°ΠΊΡ, ΡΡΠΎ Π²ΡΠ»Π΅Π΄ΡΡΠ²ΠΈΠ΅ ΡΠΎΠ³ΠΎ, ΡΡΠΎ ΡΡΡΡΠΊΡΡΡΡ ΡΠ²Π»ΡΡΡΡΡ Π·Π½Π°ΡΠΈΠΌΡΠΌ ΡΠΈΠΏΠΎΠΌ, ΡΠΎ ΠΌΠΎΠΆΠ½ΠΎ ΡΠΎΠ·Π΄Π°ΡΡ ΡΡΡΡΠΊΡΡΡΡ Π±Π΅Π· ΠΈΡΠΏΠΎΠ»ΡΠ·ΠΎΠ²Π°Π½ΠΈΡ ΠΊΠΎΠ½ΡΡΡΡΠΊΡΠΎΡΠ°, Π½Π°ΠΏΡΠΈΠΌΠ΅Ρ:
Π ΡΠ°ΠΊΠΎΠΌ ΡΠ»ΡΡΠ°Π΅, ΠΏΠ΅ΡΠ΅ΠΌΠ΅Π½Π½Π°Ρ ΡΠΎΠ·Π΄Π°Π΅ΡΡΡ, Π½ΠΎ ΠΏΠΎΠ»Ρ Π½Π΅ Π±ΡΠ΄ΡΡ ΠΈΠ½ΠΈΡΠΈΠ°Π»ΠΈΠ·ΠΈΡΠΎΠ²Π°Π½Ρ Π² ΡΠΎΠΎΡΠ²Π΅ΡΡΡΠ²ΠΈΠΈ ΠΏΠ°ΡΠ°ΠΌΠ΅ΡΡΠ°ΠΌΠΈ ΠΊΠΎΠ½ΡΡΡΡΠΊΡΠΎΡΠ°.
ΠΠ°ΠΊΠ»ΡΡΠ΅Π½ΠΈΠ΅
ΠΡΠΏΠΎΠ»ΡΠ·ΡΠΉΡΠ΅ ΡΡΡΡΠΊΡΡΡΡ, ΡΡΠΎ ΠΏΡΠΈΠ·Π½Π°ΠΊ Ρ ΠΎΡΠΎΡΠ΅Π³ΠΎ ΡΠΎΠ½Π° Π² ΠΏΡΠΎΠ³ΡΠ°ΠΌΠΌΠΈΡΠΎΠ²Π°Π½ΠΈΠΈ Π½Π° C# ΠΈ Π΄Π° ΠΏΡΠΈΠ±ΡΠ΄Π΅Ρ Ρ ΠΠ°ΠΌΠΈ ΡΠΈΠ»Π°β¦ ΡΡΡΡΠΊΡΡΡ. Π¦ΠΈΡΠ°ΡΠ° ΠΈΠ· ΠΊΠΎΠΌΠΌΠ΅Π½ΡΠ°ΡΠΈΡ: “Π‘ Π·Π°ΠΊΠ»ΡΡΠ΅Π½ΠΈΠ΅ΠΌ ΡΠΎΠΆΠ΅ Π½Π΅ ΡΠΎΠ³Π»Π°ΡΠ΅Π½. ΠΠ½ΠΎΠ³ΠΈΠ΅ ΠΌΠ°ΡΡΠΈΡΡΠ΅ Π·Π°ΠΏΠ°Π΄Π½ΡΠ΅ Π°Π²ΡΠΎΡΡ Π½Π°ΠΎΠ±ΠΎΡΠΎΡ ΡΠ΅ΠΊΠΎΠΌΠ΅Π½Π΄ΡΡΡ ΠΊΠ°ΠΊ ΠΌΠΎΠΆΠ½ΠΎ ΠΌΠ΅Π½ΡΡΠ΅ ΠΈΡΠΏΠΎΠ»ΡΠ·ΠΎΠ²Π°ΡΡ ΡΡΡΡΠΊΡΡΡΡ, ΠΏΡΠ΅Π΄ΠΏΠΎΡΠΈΡΠ°Ρ ΠΊΠ»Π°ΡΡΡ. Π₯ΠΎΡΡ, ΠΊΠΎΠ½Π΅ΡΠ½ΠΎ, ΠΌΠΎΠ»ΠΈΡΡΡΡ Π½Π° Π½ΠΈΡ ΠΈ ΠΈΡ ΠΌΠ½Π΅Π½ΠΈΠ΅ Π½Π΅ ΡΡΠΎΠΈΡ, Π»ΡΡΡΠ΅ Π΄ΡΠΌΠ°ΡΡ ΡΠ²ΠΎΠ΅ΠΉ Π³ΠΎΠ»ΠΎΠ²ΠΎΠΉ.”