x = y
ΠΈΡΡΠΈΠ½Π½ΠΎ ΡΠΎΠ³Π΄Π° ΠΈ ΡΠΎΠ»ΡΠΊΠΎ ΡΠΎΠ³Π΄Π°, ΠΊΠΎΠ³Π΄Π° ΠΎΠ±Π΅ ΡΡΡΠ»ΠΊΠΈ ΠΏΡΡΡΡ ΠΈΠ»ΠΈ ΠΏΡΠΈΡΠΎΠ΅Π΄ΠΈΠ½Π΅Π½Ρ ΠΊ ΠΎΠ΄Π½ΠΎΠΌΡ ΠΈ ΡΠΎΠΌΡ ΠΆΠ΅ ΠΎΠ±ΡΠ΅ΠΊΡΡ. ΠΡΠΎΡΠΈΠ²ΠΎΠΏΠΎΠ»ΠΎΠΆΠ½ΡΠΉ ΠΎΠΏΠ΅ΡΠ°ΡΠΎΡ "Π½Π΅ ΡΠΊΠ²ΠΈΠ²Π°Π»Π΅Π½ΡΠ½ΠΎ" Π·Π°ΠΏΠΈΡΡΠ²Π°Π΅ΡΡΡ ΠΊΠ°ΠΊ /=.
ΠΡΡΠ°ΠΆΠ΅Π½ΠΈΠ΅:
r = a.loved_one
ΠΈΡΡΠΈΠ½Π½ΠΎ Π² ΡΠΈΡΡΠ°ΡΠΈΠΈ, ΠΏΡΠ΅Π΄ΡΡΠ°Π²Π»Π΅Π½Π½ΠΎΠΉ Π½Π° ΡΠΈΡ.8.13 ΠΈ Π»ΠΎΠΆΠ½ΠΎ Π΄Π»Ρ ΡΠΈΡΡΠ°ΡΠΈΠΈ ΡΠΈΡ.8.12 .
ΠΠ°ΠΌΠ΅ΡΡΡΠ΅, Π² ΠΎΠΏΠ΅ΡΠ°ΡΠΈΡΡ ΡΠΊΠ²ΠΈΠ²Π°Π»Π΅Π½ΡΠ½ΠΎΡΡΠΈ ΡΡΠ°Π²Π½ΠΈΠ²Π°ΡΡΡΡ ΡΡΡΠ»ΠΊΠΈ, Π° Π½Π΅ ΠΎΠ±ΡΠ΅ΠΊΡΡ, ΠΊ ΠΊΠΎΡΠΎΡΡΠΌ ΠΎΠ½ΠΈ ΠΏΡΠΈΡΠΎΠ΅Π΄ΠΈΠ½Π΅Π½Ρ. Π’Π°ΠΊ ΡΡΠΎ Π΅ΡΠ»ΠΈ Π΄Π²Π΅ ΡΡΡΠ»ΠΊΠΈ ΠΏΡΠΈΡΠΎΠ΅Π΄ΠΈΠ½Π΅Π½Ρ ΠΊ ΡΠ°Π·Π½ΡΠΌ ΠΎΠ±ΡΠ΅ΠΊΡΠ°ΠΌ, ΡΠ΅Π·ΡΠ»ΡΡΠ°ΡΠΎΠΌ ΠΎΠΏΠ΅ΡΠ°ΡΠΈΠΈ ΡΠΊΠ²ΠΈΠ²Π°Π»Π΅Π½ΡΠ½ΠΎΡΡΠΈ Π±ΡΠ΄Π΅Ρ false, Π΄Π°ΠΆΠ΅ Π΅ΡΠ»ΠΈ ΠΎΠ±ΡΠ΅ΠΊΡΡ ΠΈΠΌΠ΅ΡΡ Π²ΡΠ΅ ΠΏΠΎΠ»Ρ Ρ ΠΎΠ΄ΠΈΠ½Π°ΠΊΠΎΠ²ΡΠΌΠΈ Π·Π½Π°ΡΠ΅Π½ΠΈΡΠΌΠΈ. ΠΠΏΠ΅ΡΠ°ΡΠΈΠΈ, ΡΡΠ°Π²Π½ΠΈΠ²Π°ΡΡΠΈΠ΅ ΠΎΠ±ΡΠ΅ΠΊΡΡ, Π° Π½Π΅ ΡΡΡΠ»ΠΊΠΈ, Π±ΡΠ΄ΡΡ Π²Π²Π΅Π΄Π΅Π½Ρ ΠΏΠΎΠ·Π΄Π½Π΅Π΅.
ΠΠ½Π°ΡΠ΅Π½ΠΈΠ΅ void
ΠΠΎΠ»ΡΡΠΈΡΡ ΠΏΡΡΡΡΡ ΡΡΡΠ»ΠΊΡ Π΄ΠΎΡΡΠ°ΡΠΎΡΠ½ΠΎ ΠΏΡΠΎΡΡΠΎ - ΠΏΡΠΈ ΠΈΠ½ΠΈΡΠΈΠ°Π»ΠΈΠ·Π°ΡΠΈΠΈ ΠΏΠΎ ΡΠΌΠΎΠ»ΡΠ°Π½ΠΈΡ Π²ΡΠ΅ ΡΡΡΠ»ΠΊΠΈ ΠΏΡΡΡΡ. ΠΠ΄Π½Π°ΠΊΠΎ ΡΠ΄ΠΎΠ±Π½ΠΎ ΠΈΠΌΠ΅ΡΡ ΡΠΏΠ΅ΡΠΈΠ°Π»ΡΠ½ΠΎΠ΅ ΠΈΠΌΡ Π΄Π»Ρ ΡΡΡΠ»ΠΊΠΈ, Π΄ΠΎΡΡΡΠΏΠ½ΠΎΠΉ Π² Π»ΡΠ±ΠΎΠΌ ΠΊΠΎΠ½ΡΠ΅ΠΊΡΡΠ΅ ΠΈ ΠΈΠΌΠ΅ΡΡΠ΅ΠΉ Π·Π½Π°ΡΠ΅Π½ΠΈΠ΅ void . ΠΡΠ΅Π΄ΠΎΠΏΡΠ΅Π΄Π΅Π»Π΅Π½Π½ΡΠΉ ΠΊΠΎΠΌΠΏΠΎΠ½Π΅Π½Ρ
Void
ΠΈΠ³ΡΠ°Π΅Ρ ΡΡΡ ΡΠΎΠ»Ρ.
ΠΠ±ΡΡΠ½ΠΎ ΠΊΠΎΠΌΠΏΠΎΠ½Π΅Π½Ρ Void ΠΈΡΠΏΠΎΠ»ΡΠ·ΡΠ΅ΡΡΡ Π² ΡΠ΅ΡΡΠ°Ρ , ΠΏΡΠΎΠ²Π΅ΡΡΡΡΠΈΡ ΠΏΡΡΡΠΎΡΡ ΡΡΡΠ»ΠΎΠΊ:
if x = Void then ...
ΠΈ Π΄Π»Ρ ΡΠΎΠ³ΠΎ, ΡΡΠΎΠ±Ρ ΠΏΡΠΈΡΠ²ΠΎΠΈΡΡ Π½Π΅ΠΊΠΎΡΠΎΡΠΎΠΉ ΡΡΡΠ»ΠΊΠ΅ ΡΡΠΎ Π·Π½Π°ΡΠ΅Π½ΠΈΠ΅:
x := Void
Π ΡΠ΅Π·ΡΠ»ΡΡΠ°ΡΠ΅ ΠΏΠΎΡΠ»Π΅Π΄Π½Π΅Π³ΠΎ ΠΏΡΠΈΡΠ²Π°ΠΈΠ²Π°Π½ΠΈΡ ΠΏΡΠΎΠΈΡΡ ΠΎΠ΄ΠΈΡ ΠΎΡΡΠΎΠ΅Π΄ΠΈΠ½Π΅Π½ΠΈΠ΅ ΡΡΡΠ»ΠΊΠΈ ΠΎΡ ΠΎΠ±ΡΠ΅ΠΊΡΠ°, ΠΈ ΠΎΠ½Π° ΡΡΠ°Π½ΠΎΠ²ΠΈΡΡΡ ΠΏΡΡΡΠΎΠΉ. ΠΡΠ° ΡΠΈΡΡΠ°ΡΠΈΡ ΠΏΠΎΠΊΠ°Π·Π°Π½Π° Π½Π° ΡΠ»Π΅Π΄ΡΡΡΠ΅ΠΌ ΡΠΈΡΡΠ½ΠΊΠ΅:
Π ΠΈΡ. 8.14. ΠΡΡΠΎΠ΅Π΄ΠΈΠ½Π΅Π½ΠΈΠ΅ ΡΡΡΠ»ΠΊΠΈ ΠΎΡ ΠΎΠ±ΡΠ΅ΠΊΡΠ°
ΠΡΠΈΡΠ²Π°ΠΈΠ²Π°Π½ΠΈΠ΅ Void ΡΡΡΠ»ΠΊΠ΅ Π½Π΅ ΠΎΠΊΠ°Π·ΡΠ²Π°Π΅Ρ Π½ΠΈΠΊΠ°ΠΊΠΎΠ³ΠΎ Π²Π»ΠΈΡΠ½ΠΈΡ Π½Π° ΠΎΠ±ΡΠ΅ΠΊΡ, ΡΠ°Π½Π΅Π΅ ΠΏΡΠΈΡΠΎΠ΅Π΄ΠΈΠ½Π΅Π½Π½ΡΠΉ ΠΊ ΡΡΡΠ»ΠΊΠ΅, - ΡΠ°Π·ΡΡΠ²Π°Π΅ΡΡΡ ΡΠΎΠ»ΡΠΊΠΎ ΡΠ²ΡΠ·Ρ ΠΌΠ΅ΠΆΠ΄Ρ ΡΡΡΠ»ΠΊΠΎΠΉ ΠΈ ΠΎΠ±ΡΠ΅ΠΊΡΠΎΠΌ. ΠΡΠ»ΠΎ Π±Ρ Π½Π΅ΠΊΠΎΡΡΠ΅ΠΊΡΠ½ΠΎ ΡΠ°ΡΡΠΌΠ°ΡΡΠΈΠ²Π°ΡΡ ΡΡΡ ΠΎΠΏΠ΅ΡΠ°ΡΠΈΡ ΠΊΠ°ΠΊ ΠΎΡΠ²ΠΎΠ±ΠΎΠΆΠ΄Π΅Π½ΠΈΠ΅ ΠΏΠ°ΠΌΡΡΠΈ, ΡΠ°ΠΊ ΠΊΠ°ΠΊ Π΄ΡΡΠ³ΠΈΠ΅ ΡΡΡΠ»ΠΊΠΈ ΠΌΠΎΠ³ΡΡ ΠΏΡΠΎΠ΄ΠΎΠ»ΠΆΠ°ΡΡ Π±ΡΡΡ ΡΠ²ΡΠ·Π°Π½Π½ΡΠΌΠΈ Ρ ΠΎΠ±ΡΠ΅ΠΊΡΠΎΠΌ (Π½Π° ΡΠΈΡΡΠ½ΠΊΠ΅ x ΠΌΠΎΠΆΠ΅Ρ Π±ΡΡΡ ΠΎΡΡΠΎΠ΅Π΄ΠΈΠ½Π΅Π½ΠΎ ΠΎΡ ΠΎΠ±ΡΠ΅ΠΊΡΠ° O1, Π½ΠΎ Π΄ΡΡΠ³ΠΈΠ΅ ΡΡΡΠ»ΠΊΠΈ ΠΌΠΎΠ³ΡΡ Π±ΡΡΡ Π΅ΡΠ΅ ΠΏΡΠΈΡΠΎΠ΅Π΄ΠΈΠ½Π΅Π½Ρ ΠΊ Π½Π΅ΠΌΡ). ΠΠ± ΡΠΏΡΠ°Π²Π»Π΅Π½ΠΈΠΈ ΠΏΠ°ΠΌΡΡΡΡ ΡΠΌΠΎΡΡΠΈ ΡΠ»Π΅Π΄ΡΡΡΡΡ Π»Π΅ΠΊΡΠΈΡ.ΠΠ»ΠΎΠ½ΠΈΡΠΎΠ²Π°Π½ΠΈΠ΅ ΠΈ ΡΡΠ°Π²Π½Π΅Π½ΠΈΠ΅ ΠΎΠ±ΡΠ΅ΠΊΡΠΎΠ²
Π‘ΡΡΠ»ΠΎΡΠ½ΠΎΠ΅ ΠΏΡΠΈΡΠ²Π°ΠΈΠ²Π°Π½ΠΈΠ΅ ΠΏΡΠΈΠ²ΠΎΠ΄ΠΈΡ ΠΊ ΡΠΎΠΌΡ, ΡΡΠΎ Π΄Π²Π΅ ΠΈΠ»ΠΈ Π½Π΅ΡΠΊΠΎΠ»ΡΠΊΠΎ ΡΡΡΠ»ΠΎΠΊ ΠΏΡΠΈΡΠΎΠ΅Π΄ΠΈΠ½ΡΡΡΡΡ ΠΊ ΠΎΠ΄Π½ΠΎΠΌΡ ΠΎΠ±ΡΠ΅ΠΊΡΡ. ΠΠ½ΠΎΠ³Π΄Π° Π½Π΅ΠΎΠ±Ρ ΠΎΠ΄ΠΈΠΌΠ° Π΄ΡΡΠ³Π°Ρ ΡΠΎΡΠΌΠ° ΠΏΡΠΈΡΠ²Π°ΠΈΠ²Π°Π½ΠΈΡ, Π² ΡΠ΅Π·ΡΠ»ΡΡΠ°ΡΠ΅ ΠΊΠΎΡΠΎΡΠΎΠΉ ΠΌΡ Ρ ΠΎΡΠΈΠΌ ΠΏΠΎΠ»ΡΡΠΈΡΡ Π½Π΅ ΠΊΠΎΠΏΠΈΡ ΡΡΡΠ»ΠΊΠΈ, Π° ΠΊΠΎΠΏΠΈΡ ΠΎΠ±ΡΠ΅ΠΊΡΠ°. ΠΡΠ° ΡΠ΅Π»Ρ Π΄ΠΎΡΡΠΈΠ³Π°Π΅ΡΡΡ ΠΏΡΠΈ Π²ΡΠ·ΠΎΠ²Π΅ ΡΡΠ½ΠΊΡΠΈΠΈ ΠΊΠ»ΠΎΠ½ΠΈΡΠΎΠ²Π°Π½ΠΈΡ clone.
ΠΡΠ»ΠΈ y ΠΏΡΠΈΡΠΎΠ΅Π΄ΠΈΠ½Π΅Π½ΠΎ ΠΊ ΠΎΠ±ΡΠ΅ΠΊΡΡ OY, Π²ΡΡΠ°ΠΆΠ΅Π½ΠΈΠ΅
clone (y)
ΠΎΠ·Π½Π°ΡΠ°Π΅Ρ ΡΠΎΠ·Π΄Π°Π½ΠΈΠ΅ Π½ΠΎΠ²ΠΎΠ³ΠΎ ΠΎΠ±ΡΠ΅ΠΊΡΠ° OX , ΡΠ°ΠΊΠΎΠ³ΠΎ, ΡΡΠΎ ΠΎΠ½ ΠΈΠΌΠ΅Π΅Ρ ΡΠ΅ ΠΆΠ΅ ΠΏΠΎΠ»Ρ, ΡΡΠΎ ΠΈ OY, ΠΈ Π²ΡΠ΅ ΡΠΎΠΎΡΠ²Π΅ΡΡΡΠ²ΡΡΡΠΈΠ΅ ΠΏΠΎΠ»Ρ ΠΈΠΌΠ΅ΡΡ ΠΈΠ΄Π΅Π½ΡΠΈΡΠ½ΡΠ΅ Π·Π½Π°ΡΠ΅Π½ΠΈΡ. ΠΡΠ»ΠΈ y ΡΠ°Π²Π½ΠΎ void, ΡΠΎ Π·Π½Π°ΡΠ΅Π½ΠΈΠ΅ clone (y) ΡΠ°ΠΊΠΆΠ΅ void.
Π‘ΠΊΠΎΠΏΠΈΡΠΎΠ²Π°ΡΡ ΠΏΡΠΈΡΠΎΠ΅Π΄ΠΈΠ½Π΅Π½Π½ΡΠΉ ΠΊ y ΠΎΠ±ΡΠ΅ΠΊΡ ΠΈ ΡΠ²ΡΠ·Π°ΡΡ ΠΊΠΎΠΏΠΈΡ ΡΠΎ ΡΡΡΠ»ΠΊΠΎΠΉ x ΠΏΠΎΠ·Π²ΠΎΠ»ΡΠ΅Ρ ΠΏΡΠΈΡΠ²Π°ΠΈΠ²Π°Π½ΠΈΠ΅:
[1]
x := clone (y)
ΠΠΎΡ ΠΈΠ»Π»ΡΡΡΡΠ°ΡΠΈΡ ΡΡΠΎΠ³ΠΎ ΠΌΠ΅Ρ Π°Π½ΠΈΠ·ΠΌΠ°:
Π ΠΈΡ. 8.15. ΠΠ»ΠΎΠ½ΠΈΡΠΎΠ²Π°Π½ΠΈΠ΅ ΠΎΠ±ΡΠ΅ΠΊΡΠ°
ΠΠ°ΡΡΠ΄Ρ ΡΠΎ ΡΡΠ°Π²Π½Π΅Π½ΠΈΠ΅ΠΌ ΡΡΡΠ»ΠΎΠΊ Π½Π΅ΠΎΠ±Ρ ΠΎΠ΄ΠΈΠΌ ΠΌΠ΅Ρ Π°Π½ΠΈΠ·ΠΌ, ΠΏΠΎΠ·Π²ΠΎΠ»ΡΡΡΠΈΠΉ ΡΡΠ°Π²Π½ΠΈΠ²Π°ΡΡ ΠΎΠ±ΡΠ΅ΠΊΡΡ. ΠΡΠΎΠΉ ΡΠ΅Π»ΠΈ ΡΠ»ΡΠΆΠΈΡ ΡΡΠ½ΠΊΡΠΈΡ equal . ΠΡΠ·ΠΎΠ²:
equal (x, y)
Π²ΠΎΠ·Π²ΡΠ°ΡΠ°Π΅Ρ Π·Π½Π°ΡΠ΅Π½ΠΈΠ΅ true, Π΅ΡΠ»ΠΈ ΠΈ ΡΠΎΠ»ΡΠΊΠΎ Π΅ΡΠ»ΠΈ x ΠΈ y ΠΎΠ±Π° ΠΈΠΌΠ΅ΡΡ Π·Π½Π°ΡΠ΅Π½ΠΈΠ΅ void ΠΈΠ»ΠΈ ΠΏΡΠΈΡΠΎΠ΅Π΄ΠΈΠ½Π΅Π½Ρ ΠΊ Π΄Π²ΡΠΌ ΠΎΠ±ΡΠ΅ΠΊΡΠ°ΠΌ Ρ ΠΈΠ΄Π΅Π½ΡΠΈΡΠ½ΡΠΌΠΈ ΠΏΠΎΠ»ΡΠΌΠΈ. ΠΠΎΡΠ»Π΅ Π²ΡΠΏΠΎΠ»Π½Π΅Π½ΠΈΡ ΠΏΡΠΈΡΠ²Π°ΠΈΠ²Π°Π½ΠΈΡ Ρ ΠΊΠ»ΠΎΠ½ΠΈΡΠΎΠ²Π°Π½ΠΈΠ΅ΠΌ [1], ΡΠΎΡΡΠΎΡΠ½ΠΈΠ΅, Π½Π΅ΠΏΠΎΡΡΠ΅Π΄ΡΡΠ²Π΅Π½Π½ΠΎ ΡΠ»Π΅Π΄ΡΡΡΠ΅Π΅ Π·Π° ΠΏΡΠΈΡΠ²Π°ΠΈΠ²Π°Π½ΠΈΠ΅ΠΌ, ΡΠ΄ΠΎΠ²Π»Π΅ΡΠ²ΠΎΡΡΠ΅Ρ equal (x, y).
ΠΠΎΠ·ΠΌΠΎΠΆΠ½ΠΎ, Π²Ρ ΡΠ΄ΠΈΠ²Π»ΡΠ΅ΡΠ΅ΡΡ, ΠΏΠΎΡΠ΅ΠΌΡ Ρ ΡΡΠ½ΠΊΡΠΈΠΈ clone Π΅ΡΡΡ Π°ΡΠ³ΡΠΌΠ΅Π½Ρ, Π° Ρ ΡΡΠ½ΠΊΡΠΈΠΈ equal - ΠΈΡ Π΄Π²Π°. ΠΠ»Ρ ΠΠ-ΡΡΠΈΠ»Ρ Ρ Π°ΡΠ°ΠΊΡΠ΅ΡΠ΅Π½ ΠΊΠ²Π°Π»ΠΈΡΠΈΡΠΈΡΡΠ΅ΠΌΡΠΉ Π²ΡΠ·ΠΎΠ² Π² ΡΠΎΡΠΌΠ΅: y.twin ΠΈ x.is_equal (y). ΠΡΠ²Π΅Ρ ΠΏΠΎΡΠ²ΠΈΡΡΡ Π² ΡΠ°Π·Π΄Π΅Π»Π΅ ΠΎΠ±ΡΡΠΆΠ΄Π΅Π½ΠΈΡ, Π½ΠΎ ΡΡΠΎ Π±ΡΠ΄Π΅Ρ Π΅ΡΠ΅ Π½Π΅ ΡΠΊΠΎΡΠΎ, ΡΠ°ΠΊ ΡΡΠΎ ΠΏΠΎΠΏΡΡΠ°ΠΉΡΠ΅ΡΡ Π΄ΠΎΠ³Π°Π΄Π°ΡΡΡΡ ΡΠ°ΠΌΠΈ.ΠΠΎΠΏΠΈΡΠΎΠ²Π°Π½ΠΈΠ΅ ΠΎΠ±ΡΠ΅ΠΊΡΠΎΠ²
Π€ΡΠ½ΠΊΡΠΈΡ clone ΡΠΎΠ·Π΄Π°Π΅Ρ Π½ΠΎΠ²ΡΡ ΠΊΠΎΠΏΠΈΡ ΡΡΡΠ΅ΡΡΠ²ΡΡΡΠ΅Π³ΠΎ ΠΎΠ±ΡΠ΅ΠΊΡΠ°. ΠΠ½ΠΎΠ³Π΄Π° ΡΠ΅Π»Π΅Π²ΠΎΠΉ ΠΎΠ±ΡΠ΅ΠΊΡ ΡΠΆΠ΅ ΡΡΡΠ΅ΡΡΠ²ΡΠ΅Ρ, ΠΈ Π²ΡΠ΅, ΡΡΠΎ Π½Π΅ΠΎΠ±Ρ ΠΎΠ΄ΠΈΠΌΠΎ, ΡΡΠΎ ΡΠΊΠΎΠΏΠΈΡΠΎΠ²Π°ΡΡ Π·Π½Π°ΡΠ΅Π½ΠΈΡ ΠΏΠΎΠ»Π΅ΠΉ. ΠΡΠΎΡΠ΅Π΄ΡΡΠ° copy Π²ΡΠΏΠΎΠ»Π½ΡΠ΅Ρ ΡΡΡ ΡΠ°Π±ΠΎΡΡ. ΠΠ½Π° Π²ΡΠ·ΡΠ²Π°Π΅ΡΡΡ ΠΎΠ±ΡΡΠ½ΡΠΌ ΠΎΠ±ΡΠ°Π·ΠΎΠΌ:
x.copy (y)
Π‘ΡΡΠ½ΠΎΡΡΠΈ x ΠΈ y Π΄ΠΎΠ»ΠΆΠ½Ρ Π±ΡΡΡ ΠΎΠ΄Π½ΠΎΠ³ΠΎ ΠΈ ΡΠΎΠ³ΠΎ ΠΆΠ΅ ΡΠΈΠΏΠ°; ΡΡΡΠ΅ΠΊΡ ΠΎΡ Π²ΡΠΏΠΎΠ»Π½Π΅Π½ΠΈΡ - ΠΊΠΎΠΏΠΈΡΠΎΠ²Π°Π½ΠΈΠ΅ ΠΏΠΎΠ»Π΅ΠΉ ΠΎΠ±ΡΠ΅ΠΊΡΠ°, ΠΏΡΠΈΡΠΎΠ΅Π΄ΠΈΠ½Π΅Π½Π½ΠΎΠ³ΠΎ ΠΊ y, Π² ΡΠΎΠΎΡΠ²Π΅ΡΡΡΠ²ΡΡΡΠΈΠ΅ ΠΏΠΎΠ»Ρ ΠΎΠ±ΡΠ΅ΠΊΡΠ°, ΠΏΡΠΈΡΠΎΠ΅Π΄ΠΈΠ½Π΅Π½Π½ΠΎΠ³ΠΎ ΠΊ x.
ΠΠ°ΠΊ ΠΈ Π²ΠΎ Π²ΡΠ΅Ρ Π²ΡΠ·ΠΎΠ²Π°Ρ ΠΊΠΎΠΌΠΏΠΎΠ½Π΅Π½ΡΠ°, Π²ΡΠ·ΠΎΠ² copy ΡΡΠ΅Π±ΡΠ΅Ρ, ΡΡΠΎΠ±Ρ ΡΠ΅Π»Π΅Π²ΠΎΠΉ ΠΎΠ±ΡΠ΅ΠΊΡ x Π±ΡΠ» Π½Π΅ ΠΏΡΡΡ. ΠΠΎΠΏΠΎΠ»Π½ΠΈΡΠ΅Π»ΡΠ½ΠΎ ΡΡΠ΅Π±ΡΠ΅ΡΡΡ, ΡΡΠΎΠ±Ρ ΠΈ y Π±ΡΠ» Π½Π΅ ΠΏΡΡΡ. ΠΡΠ° Π½Π΅ΡΠΏΠΎΡΠΎΠ±Π½ΠΎΡΡΡ ΠΈΠΌΠ΅ΡΡ Π΄Π΅Π»ΠΎ Ρ ΠΏΡΡΡΡΠΌΠΈ ΡΡΡΠ»ΠΊΠ°ΠΌΠΈ ΠΎΡΠ»ΠΈΡΠ°Π΅Ρ copy ΠΎΡ clone.
Π’ΡΠ΅Π±ΠΎΠ²Π°Π½ΠΈΠ΅ Π½Π΅ ΠΏΡΡΡΠΎΡΡ y Π½Π°ΡΡΠΎΠ»ΡΠΊΠΎ Π²Π°ΠΆΠ½ΠΎ, ΡΡΠΎ Π΄ΠΎΠ»ΠΆΠ΅Π½ ΡΡΡΠ΅ΡΡΠ²ΠΎΠ²Π°ΡΡ ΡΠΏΠΎΡΠΎΠ± Π΄Π»Ρ Π΅Π³ΠΎ ΡΠΎΡΠΌΠ°Π»ΡΠ½ΠΎΠ³ΠΎ Π²ΡΡΠ°ΠΆΠ΅Π½ΠΈΡ. Π€Π°ΠΊΡΠΈΡΠ΅ΡΠΊΠΈ ΡΠ΅ΡΡ ΠΈΠ΄Π΅Ρ ΠΎ Π±ΠΎΠ»Π΅Π΅ ΠΎΠ±ΡΠ΅ΠΉ ΠΏΡΠΎΠ±Π»Π΅ΠΌΠ΅: ΠΊΠ°ΠΊ ΠΏΡΠΎΠ³ΡΠ°ΠΌΠΌΠ° ΠΌΠΎΠΆΠ΅Ρ Π·Π°Π΄Π°ΡΡ ΠΏΡΠ΅Π΄ΡΡΠ»ΠΎΠ²ΠΈΡ Π½Π° Π°ΡΠ³ΡΠΌΠ΅Π½ΡΡ, ΠΏΠ΅ΡΠ΅Π΄Π°Π²Π°Π΅ΠΌΡΠ΅ ΠΊΠ»ΠΈΠ΅Π½ΡΠΎΠΌ ΠΏΡΠΈ Π΅Π΅ Π²ΡΠ·ΠΎΠ²Π΅. Π’Π°ΠΊΠΈΠ΅ ΠΏΡΠ΅Π΄ΡΡΠ»ΠΎΠ²ΠΈΡ, ΡΠ²Π»ΡΡΡΡ ΡΠ°ΡΡΠ½ΡΠΌ ΡΠ»ΡΡΠ°Π΅ΠΌ ΠΎΠ±ΡΠ΅Π³ΠΎ ΠΏΠΎΠ½ΡΡΠΈΡ "ΡΡΠ²Π΅ΡΠΆΠ΄Π΅Π½ΠΈΠ΅" Π² Π΄Π΅ΡΠ°Π»ΡΡ Π±ΡΠ΄ΡΡ ΠΎΠ±ΡΡΠΆΠ΄Π°ΡΡΡΡ Π² ΠΏΠΎΡΠ»Π΅Π΄ΡΡΡΠΈΡ Π»Π΅ΠΊΡΠΈΡΡ . ΠΠ½Π°Π»ΠΎΠ³ΠΈΡΠ½ΠΎ, Π½Π°ΠΌ Ρ ΠΎΡΠ΅Π»ΠΎΡΡ Π±Ρ ΡΠΌΠ΅ΡΡ Π²ΡΡΠ°ΠΆΠ°ΡΡ Π² Π²ΠΈΠ΄Π΅ ΠΏΠΎΡΡΡΡΠ»ΠΎΠ²ΠΈΡ ΡΠ΅ΠΌΠ°Π½ΡΠΈΡΠ΅ΡΠΊΠΎΠ΅ ΡΠ²ΠΎΠΉΡΡΠ²ΠΎ, ΠΎΡΠΌΠ΅ΡΠ΅Π½Π½ΠΎΠ΅ Π²ΡΡΠ΅, - ΡΠ΅Π·ΡΠ»ΡΡΠ°Ρ Π²ΡΠΏΠΎΠ»Π½Π΅Π½ΠΈΡ clone ΡΠ΄ΠΎΠ²Π»Π΅ΡΠ²ΠΎΡΡΠ΅Ρ equal.ΠΡΠΎΡΠ΅Π΄ΡΡΠ° copy ΠΌΠΎΠΆΠ΅Ρ ΡΡΠΈΡΠ°ΡΡΡΡ Π±ΠΎΠ»Π΅Π΅ ΡΡΠ½Π΄Π°ΠΌΠ΅Π½ΡΠ°Π»ΡΠ½ΠΎΠΉ, ΡΠ΅ΠΌ ΡΡΠ½ΠΊΡΠΈΡ clone Π² ΡΠΎΠΌ ΡΠΌΡΡΠ»Π΅, ΡΡΠΎ, ΠΏΠΎ ΠΌΠ΅Π½ΡΡΠ΅ΠΉ ΠΌΠ΅ΡΠ΅, Π΄Π»Ρ ΠΊΠ»Π°ΡΡΠ° Π±Π΅Π· ΠΏΡΠΎΡΠ΅Π΄ΡΡΡ ΡΠΎΠ·Π΄Π°Π½ΠΈΡ ΠΌΠΎΠΆΠ½ΠΎ Π²ΡΡΠ°Π·ΠΈΡΡ clone Π² ΡΠ΅ΡΠΌΠΈΠ½Π°Ρ copy ΡΠ»Π΅Π΄ΡΡΡΠΈΠΌ ΠΎΠ±ΡΠ°Π·ΠΎΠΌ:
clone (y: SOME_TYPE) is
-- Void Π΅ΡΠ»ΠΈ y ΡΠ°Π²Π½ΠΎ void; ΠΈΠ½Π°ΡΠ΅ Π΄ΡΠ±Π»ΠΈΡΠΎΠ²Π°ΡΡ ΠΏΡΠΈΡΠΎΠ΅Π΄ΠΈΠ½Π΅Π½Π½ΡΠΉ ΠΊ y ΠΎΠ±ΡΠ΅ΠΊΡ
do
if y /= Void then
create Result --ΠΡΠ°Π²ΠΈΠ»ΡΠ½ΠΎ ΡΠΎΠ»ΡΠΊΠΎ Π² ΠΎΡΡΡΡΡΡΠ²ΠΈΠ΅ ΠΏΡΠΎΡΠ΅Π΄ΡΡ ΡΠΎΠ·Π΄Π°Π½ΠΈΡ
Result.copy (y)
end
end
ΠΡΠΈ Π²ΡΠ·ΠΎΠ²Π΅ ΡΡΠ½ΠΊΡΠΈΠΈ ΡΡΡΠ½ΠΎΡΡΡ Result Π°Π²ΡΠΎΠΌΠ°ΡΠΈΡΠ΅ΡΠΊΠΈ ΠΈΠ½ΠΈΡΠΈΠ°Π»ΠΈΠ·ΠΈΡΡΠ΅ΡΡΡ Π² ΡΠΎΠΎΡΠ²Π΅ΡΡΡΠ²ΠΈΠΈ Ρ ΠΎΠ±ΡΠΈΠΌΠΈ ΠΏΡΠ°Π²ΠΈΠ»Π°ΠΌΠΈ Π΄Π»Ρ Π°ΡΡΠΈΠ±ΡΡΠΎΠ². ΠΠΎΡ ΠΏΠΎΡΠ΅ΠΌΡ Π½Π΅Ρ Π½Π΅ΠΎΠ±Ρ ΠΎΠ΄ΠΈΠΌΠΎΡΡΠΈ Π² Π²Π΅ΡΠ²ΠΈ else ΡΡΠ»ΠΎΠ²Π½ΠΎΠ³ΠΎ ΠΎΠΏΠ΅ΡΠ°ΡΠΎΡΠ°: Result ΠΈΠ½ΠΈΡΠΈΠ°Π»ΠΈΠ·ΠΈΡΡΠ΅ΡΡΡ Π·Π½Π°ΡΠ΅Π½ΠΈΠ΅ΠΌ Void , ΡΠ°ΠΊ ΡΡΠΎ ΡΠ΅Π·ΡΠ»ΡΡΠ°ΡΠΎΠΌ ΡΡΠ½ΠΊΡΠΈΠΈ Π±ΡΠ΄Π΅Ρ void , Π΅ΡΠ»ΠΈ Π·Π½Π°ΡΠ΅Π½ΠΈΠ΅ y ΡΡΠΎ void.
ΠΠ»ΡΠ±ΠΎΠΊΠΎΠ΅ ΠΊΠ»ΠΎΠ½ΠΈΡΠΎΠ²Π°Π½ΠΈΠ΅ ΠΈ ΡΡΠ°Π²Π½Π΅Π½ΠΈΠ΅
Π€ΠΎΡΠΌΡ ΠΊΠΎΠΏΠΈΡΠΎΠ²Π°Π½ΠΈΡ ΠΈ ΡΡΠ°Π²Π½Π΅Π½ΠΈΡ, ΡΠ΅Π°Π»ΠΈΠ·ΡΠ΅ΠΌΡΠ΅ ΠΏΠΎΠ΄ΠΏΡΠΎΠ³ΡΠ°ΠΌΠΌΠ°ΠΌΠΈ clone, equal ΠΈ copy , Π½Π°Π·ΡΠ²Π°ΡΡΡΡ ΠΏΠΎΠ²Π΅ΡΡ Π½ΠΎΡΡΠ½ΡΠΌΠΈ, ΠΏΠΎΡΠΊΠΎΠ»ΡΠΊΡ ΠΎΠ½ΠΈ ΡΠ°Π±ΠΎΡΠ°ΡΡ Ρ ΠΎΠ±ΡΠ΅ΠΊΡΠ°ΠΌΠΈ ΡΠΎΠ»ΡΠΊΠΎ Π½Π° ΠΏΠ΅ΡΠ²ΠΎΠΌ ΡΡΠΎΠ²Π½Π΅, Π½ΠΈΠΊΠΎΠ³Π΄Π° Π½Π΅ ΠΏΡΡΠ°ΡΡΡ ΡΠ»Π΅Π΄ΠΎΠ²Π°ΡΡ Π²Π³Π»ΡΠ±Ρ ΠΏΠΎ ΡΡΡΠ»ΠΊΠ°ΠΌ. ΠΠΎΠ·Π½ΠΈΠΊΠ°Π΅Ρ Π½Π΅ΠΎΠ±Ρ ΠΎΠ΄ΠΈΠΌΠΎΡΡΡ Π΄Π»Ρ Π³Π»ΡΠ±ΠΎΠΊΠΈΡ Π²Π°ΡΠΈΠ°Π½ΡΠΎΠ² ΡΡΠΈΡ ΠΎΠΏΠ΅ΡΠ°ΡΠΈΠΉ, ΡΠ΅ΠΊΡΡΡΠΈΠ²Π½ΠΎ Π΄ΡΠ±Π»ΠΈΡΡΡΡΠΈΡ ΠΏΠΎΠ»Π½ΡΡ ΡΡΡΡΠΊΡΡΡΡ.
ΠΠ»Ρ ΠΏΠΎΠ½ΠΈΠΌΠ°Π½ΠΈΡ ΡΠ°Π·Π½ΠΈΡΡ ΡΠ°ΡΡΠΌΠΎΡΡΠΈΠΌ ΠΏΡΠΈΠΌΠ΅Ρ, ΠΏΠΎΠΊΠ°Π·Π°Π½Π½ΡΠΉ Π½Π° ΡΠΈΡ.8.16. ΠΡΠ΅Π΄ΠΏΠΎΠ»ΠΎΠΆΠΈΠΌ, ΡΡΠΎ ΠΌΡ Π½Π°ΡΠΈΠ½Π°Π΅ΠΌ Π² Π½Π°ΡΠ°Π»ΡΠ½ΠΎΠΌ ΡΠΎΡΡΠΎΡΠ½ΠΈΠΈ A, Π³Π΄Π΅ ΡΡΡΠ½ΠΎΡΡΡaΠΏΡΠΈΡΠΎΠ΅Π΄ΠΈΠ½Π΅Π½Π° ΠΊ ΠΎΠ±ΡΠ΅ΠΊΡΡ O1.
Π ΠΈΡ. 8.16. Π Π°Π·Π»ΠΈΡΠ½ΡΠ΅ ΡΠΎΡΠΌΡ ΠΏΡΠΈΡΠ²Π°ΠΈΠ²Π°Π½ΠΈΡ ΠΈ ΠΊΠ»ΠΎΠ½ΠΈΡΠΎΠ²Π°Π½ΠΈΡ
Π Π°ΡΡΠΌΠΎΡΡΠΈΠΌ ΠΏΡΠΎΡΡΠΎΠ΅ ΠΏΡΠΈΡΠ²Π°ΠΈΠ²Π°Π½ΠΈΠ΅ ΡΡΡΠ»ΠΊΠΈ:
b := a
Π ΡΠΎΡΡΠΎΡΠ½ΠΈΠΈ B, ΠΏΠΎΠΊΠ°Π·Π°Π½Π½ΠΎΠΌ Π½Π° ΡΠΈΡΡΠ½ΠΊΠ΅, ΡΠ΅Π»Ρ b Π² ΡΠ΅Π·ΡΠ»ΡΡΠ°ΡΠ΅ ΠΏΡΠΈΡΠ²Π°ΠΈΠ²Π°Π½ΠΈΡ ΠΏΡΠΈΡΠΎΠ΅Π΄ΠΈΠ½Π΅Π½Π° ΠΊ ΠΎΠ±ΡΠ΅ΠΊΡΡ O1, ΠΊ ΠΊΠΎΡΠΎΡΠΎΠΌΡ ΠΏΡΠΈΡΠΎΠ΅Π΄ΠΈΠ½Π΅Π½ ΠΈΡΡΠΎΡΠ½ΠΈΠΊ a. ΠΠΈΠΊΠ°ΠΊΠΈΡ Π½ΠΎΠ²ΡΡ ΠΎΠ±ΡΠ΅ΠΊΡΠΎΠ² Π½Π΅ ΡΠΎΠ·Π΄Π°Π΅ΡΡΡ.
ΠΠ°Π»Π΅Π΅ ΡΠ°ΡΡΠΌΠΎΡΡΠΈΠΌ ΠΎΠΏΠ΅ΡΠ°ΡΠΈΡ ΠΊΠ»ΠΎΠ½ΠΈΡΠΎΠ²Π°Π½ΠΈΡ:
c := clone (a)
ΠΡΠ° ΠΈΠ½ΡΡΡΡΠΊΡΠΈΡ, ΠΊΠ°ΠΊ ΠΏΠΎΠΊΠ°Π·ΡΠ²Π°Π΅Ρ ΡΠ°Π·Π΄Π΅Π» C Π½Π°ΡΠ΅Π³ΠΎ ΡΠΈΡΡΠ½ΠΊΠ°, ΡΠΎΠ·Π΄Π°Π΅Ρ Π½ΠΎΠ²ΡΠΉ ΠΎΠ±ΡΠ΅ΠΊΡ O4, Ρ ΠΏΠΎΠ»ΡΠΌΠΈ, ΠΈΠ΄Π΅Π½ΡΠΈΡΠ½ΡΠΌΠΈ ΠΏΠΎΠ»ΡΠΌ ΠΎΠ±ΡΠ΅ΠΊΡΠ° O1. ΠΡΠ΄ΡΡ ΡΠΊΠΎΠΏΠΈΡΠΎΠ²Π°Π½Ρ Π΄Π²Π° ΡΡΡΠ»ΠΎΡΠ½ΡΡ ΠΏΠΎΠ»Ρ, ΠΈ Π·Π½Π°ΡΠ΅Π½ΠΈΡ ΡΡΡΠ»ΠΎΠΊ Π±ΡΠ΄ΡΡ ΡΠΊΠ°Π·ΡΠ²Π°ΡΡ Π½Π° ΡΠ΅ ΠΆΠ΅ ΠΎΠ±ΡΠ΅ΠΊΡΡ O1 ΠΈ O3, ΠΊΠ°ΠΊ ΠΈ ΠΏΠΎΠ»Ρ ΠΎΡΠΈΠ³ΠΈΠ½Π°Π»ΡΠ½ΠΎΠ³ΠΎ ΠΎΠ±ΡΠ΅ΠΊΡΠ° O1. ΠΠΎ, Π·Π°ΠΌΠ΅ΡΡΡΠ΅, Π½Π΅ ΠΏΡΠΎΠΈΡΡ ΠΎΠ΄ΠΈΡ Π΄ΡΠ±Π»ΠΈΡΠΎΠ²Π°Π½ΠΈΡ ΡΠ°ΠΌΠΎΠ³ΠΎ ΠΎΠ±ΡΠ΅ΠΊΡΠ° O3, ΠΈ Π½ΠΈΠΊΠ°ΠΊΠΎΠ³ΠΎ Π΄ΡΡΠ³ΠΎΠ³ΠΎ ΠΎΠ±ΡΠ΅ΠΊΡΠ° ΠΏΠΎΠΌΠΈΠΌΠΎ Π΄ΡΠ±Π»ΠΈΡΠΎΠ²Π°Π½ΠΈΡ O1. ΠΠΎ ΡΡΠΎΠΉ ΠΏΡΠΈΡΠΈΠ½Π΅ Π±Π°Π·ΠΈΡΠ½Π°Ρ ΠΎΠΏΠ΅ΡΠ°ΡΠΈΡ clone Π½Π°Π·ΡΠ²Π°Π΅ΡΡΡ ΠΏΠΎΠ²Π΅ΡΡ Π½ΠΎΡΡΠ½ΡΠΌ ΠΊΠ»ΠΎΠ½ΠΈΡΠΎΠ²Π°Π½ΠΈΠ΅ΠΌ, - ΠΎΠ½Π° ΠΎΡΡΠ°Π½Π°Π²Π»ΠΈΠ²Π°Π΅ΡΡΡ Π½Π° ΠΏΠ΅ΡΠ²ΠΎΠΌ ΡΡΠΎΠ²Π½Π΅ ΠΎΠ±ΡΠ΅ΠΊΡΠ½ΠΎΠΉ ΡΡΡΡΠΊΡΡΡΡ.
ΠΠ°ΠΌΠ΅ΡΡΡΠ΅, ΠΏΡΠΈ ΠΊΠ»ΠΎΠ½ΠΈΡΠΎΠ²Π°Π½ΠΈΠΈ ΠΈΡΡΠ΅Π·Π»ΠΈ ΡΡΡΠ»ΠΊΠΈ Π½Π° ΡΠ΅Π±Ρ. Π‘ΡΡΠ»ΠΊΠ° landlord ΠΎΠ±ΡΠ΅ΠΊΡΠ° O1 Π±ΡΠ»Π° ΠΏΡΠΈΡΠΎΠ΅Π΄ΠΈΠ½Π΅Π½Π° ΠΊ ΡΠ°ΠΌΠΎΠΌΡ ΠΎΠ±ΡΠ΅ΠΊΡΡ O1. Π£ ΠΎΠ±ΡΠ΅ΠΊΡΠ° O4 ΡΡΠΎ ΠΏΠΎΠ»Π΅ ΡΡΠ°Π½ΠΎΠ²ΠΈΡΡΡ ΡΡΡΠ»ΠΊΠΎΠΉ Π½Π° ΠΎΡΠΈΠ³ΠΈΠ½Π°Π» O1.Π Π½Π΅ΠΊΠΎΡΠΎΡΡΡ ΡΠΈΡΡΠ°ΡΠΈΡΡ Π²Ρ, Π²ΠΎΠ·ΠΌΠΎΠΆΠ½ΠΎ, Π·Π°Ρ ΠΎΡΠΈΡΠ΅ ΠΏΠΎΠΉΡΠΈ Π΄Π°Π»ΡΡΠ΅ ΠΈ Π΄ΡΠ±Π»ΠΈΡΠΎΠ²Π°ΡΡ ΡΡΡΡΠΊΡΡΡΡ ΡΠ΅ΠΊΡΡΡΠΈΠ²Π½ΠΎ Π±Π΅Π· Π²Π²Π΅Π΄Π΅Π½ΠΈΡ ΡΠ°Π·Π΄Π΅Π»ΡΠ΅ΠΌΡΡ ΡΡΡΠ»ΠΎΠΊ. Π€ΡΠ½ΠΊΡΠΈΡ Π³Π»ΡΠ±ΠΎΠΊΠΎΠ³ΠΎ ΠΊΠ»ΠΎΠ½ΠΈΡΠΎΠ²Π°Π½ΠΈΡ deep_clone ΠΏΠΎΠ·Π²ΠΎΠ»ΡΠ΅Ρ Π΄ΠΎΡΡΠΈΡΡ ΡΠ΅Π»ΠΈ. ΠΡΠΎΡΠ΅ΡΡ ΡΠΎΠ·Π΄Π°Π½ΠΈΡ deep_clone (y) ΡΠ΅ΠΊΡΡΡΠΈΠ²Π½ΠΎ ΡΠ»Π΅Π΄ΡΠ΅Ρ Π·Π° Π²ΡΠ΅ΠΌΠΈ ΡΡΡΠ»ΠΎΡΠ½ΡΠΌΠΈ ΠΏΠΎΠ»ΡΠΌΠΈ, ΡΠΎΠ΄Π΅ΡΠΆΠ°ΡΠΈΠΌΠΈΡΡ Π² ΠΎΠ±ΡΠ΅ΠΊΡΠ΅, Π΄ΡΠ±Π»ΠΈΡΡΡ ΠΏΠΎΠ»Π½ΡΡ ΡΡΡΡΠΊΡΡΡΡ. (ΠΡΠ»ΠΈ y ΡΡΠΎ void, ΡΠΎ ΠΈ ΡΠ΅Π·ΡΠ»ΡΡΠ°Ρ Π±ΡΠ΄Π΅Ρ ΡΠ°ΠΊΠΆΠ΅ void.) ΠΡΠ° ΡΡΠ½ΠΊΡΠΈΡ Π±ΡΠ΄Π΅Ρ, ΠΊΠΎΠ½Π΅ΡΠ½ΠΎ ΠΆΠ΅, ΠΏΡΠ°Π²ΠΈΠ»ΡΠ½ΠΎ ΠΎΠ±ΡΠ°Π±Π°ΡΡΠ²Π°ΡΡ ΡΠΈΠΊΠ»ΠΈΡΠ΅ΡΠΊΠΈΠ΅ ΡΡΡΠ»ΠΎΡΠ½ΡΠ΅ ΡΡΡΡΠΊΡΡΡΡ.
ΠΠΈΠΆΠ½ΡΡ ΡΠ°ΡΡΡ Π½Π° ΡΠΈΡΡΠ½ΠΊΠ΅ - ΡΠ°Π·Π΄Π΅Π» D - ΠΈΠ»Π»ΡΡΡΡΠΈΡΡΠ΅Ρ Π²ΡΠΏΠΎΠ»Π½Π΅Π½ΠΈΠ΅ ΡΡΠΎΠΉ ΠΎΠΏΠ΅ΡΠ°ΡΠΈΠΈ: