type pinteger = ^integer;
var p: ^record r,i: real end;
ΠΠ΅ΡΡΠΈΠΏΠΎΠ²ΠΎΠΉ ΡΠΊΠ°Π·Π°ΡΠ΅Π»Ρ ΠΎΠΏΠΈΡΡΠ²Π°Π΅ΡΡΡ Ρ ΠΏΠΎΠΌΠΎΡΡΡ ΡΠ»ΠΎΠ²Π° pointer.
ΠΠ»Ρ Π΄ΠΎΡΡΡΠΏΠ° ΠΊ ΡΡΠ΅ΠΉΠΊΠ΅ ΠΏΠ°ΠΌΡΡΠΈ, Π°Π΄ΡΠ΅Ρ ΠΊΠΎΡΠΎΡΠΎΠΉ Ρ ΡΠ°Π½ΠΈΡ ΡΠΈΠΏΠΈΠ·ΠΈΡΠΎΠ²Π°Π½Π½ΡΠΉ ΡΠΊΠ°Π·Π°ΡΠ΅Π»Ρ, ΠΈΡΠΏΠΎΠ»ΡΠ·ΡΠ΅ΡΡΡ ΠΎΠΏΠ΅ΡΠ°ΡΠΈΡ ΡΠ°Π·ΡΠΌΠ΅Π½ΠΎΠ²Π°Π½ΠΈΡ ^:
var
i: integer;
pi: ^integer;
...
pi := @i; // ΡΠΊΠ°Π·Π°ΡΠ΅Π»Ρ ΠΏΡΠΈΡΠ²ΠΎΠΈΠ»ΠΈ Π°Π΄ΡΠ΅Ρ ΠΏΠ΅ΡΠ΅ΠΌΠ΅Π½Π½ΠΎΠΉ i
pi^ := 5; // ΠΏΠ΅ΡΠ΅ΠΌΠ΅Π½Π½ΠΎΠΉ i ΠΏΡΠΈΡΠ²ΠΎΠΈΠ»ΠΈ 5
ΠΠΏΠ΅ΡΠ°ΡΠΈΡ ΡΠ°Π·ΡΠΌΠ΅Π½ΠΎΠ²Π°Π½ΠΈΡ Π½Π΅ ΠΌΠΎΠΆΠ΅Ρ Π±ΡΡΡ ΠΏΡΠΈΠΌΠ΅Π½Π΅Π½Π° ΠΊ Π±Π΅ΡΡΠΈΠΏΠΎΠ²ΠΎΠΌΡ ΡΠΊΠ°Π·Π°ΡΠ΅Π»Ρ.
Π’ΠΈΠΏΠΈΠ·ΠΈΡΠΎΠ²Π°Π½Π½ΡΠΉ ΡΠΊΠ°Π·Π°ΡΠ΅Π»Ρ ΠΌΠΎΠΆΠ΅Ρ Π±ΡΡΡ Π½Π΅ΡΠ²Π½ΠΎ ΠΏΡΠ΅ΠΎΠ±ΡΠ°Π·ΠΎΠ²Π°Π½ ΠΊ Π±Π΅ΡΡΠΈΠΏΠΎΠ²ΠΎΠΌΡ:
var
p: pointer;
pr: ^real;
...
p := pr;
ΠΠ±ΡΠ°ΡΠ½ΠΎΠ΅ ΠΏΡΠ΅ΠΎΠ±ΡΠ°Π·ΠΎΠ²Π°Π½ΠΈΠ΅ ΡΠ°ΠΊΠΆΠ΅ ΠΌΠΎΠΆΠ΅Ρ Π±ΡΡΡ Π²ΡΠΏΠΎΠ»Π½Π΅Π½ΠΎ Π½Π΅ΡΠ²Π½ΠΎ:
pr := p;
pr^ := 3.14;
Π£ΠΊΠ°Π·Π°ΡΠ΅Π»ΠΈ ΠΌΠΎΠΆΠ½ΠΎ ΡΡΠ°Π²Π½ΠΈΠ²Π°ΡΡ Π½Π° ΡΠ°Π²Π΅Π½ΡΡΠ²ΠΎ (=) ΠΈ Π½Π΅ΡΠ°Π²Π΅Π½ΡΡΠ²ΠΎ (<>). ΠΠ»Ρ ΡΠΎΠ³ΠΎ ΡΡΠΎΠ±Ρ ΠΎΡΠΌΠ΅ΡΠΈΡΡ ΡΠΎΡ ΡΠ°ΠΊΡ, ΡΡΠΎ ΡΠΊΠ°Π·Π°ΡΠ΅Π»Ρ Π½ΠΈΠΊΡΠ΄Π° Π½Π΅ ΡΠΊΠ°Π·ΡΠ²Π°Π΅Ρ, ΠΈΡΠΏΠΎΠ»ΡΠ·ΡΠ΅ΡΡΡ ΡΡΠ°Π½Π΄Π°ΡΡΠ½Π°Ρ ΠΊΠΎΠ½ΡΡΠ°Π½ΡΠ° nil (Π½ΡΠ»Π΅Π²ΠΎΠΉ ΡΠΊΠ°Π·Π°ΡΠ΅Π»Ρ) : p := nil.
ΠΠ½ΠΈΠΌΠ°Π½ΠΈΠ΅! ΠΠ²ΠΈΠ΄Ρ ΠΎΡΠΎΠ±Π΅Π½Π½ΠΎΡΡΠ΅ΠΉ ΠΏΠ»Π°ΡΡΠΎΡΠΌΡ .NET ΡΠΈΠΏ T ΡΠΈΠΏΠΈΠ·ΠΈΡΠΎΠ²Π°Π½Π½ΠΎΠ³ΠΎ ΡΠΊΠ°Π·Π°ΡΠ΅Π»Ρ Π½Π΅ Π΄ΠΎΠ»ΠΆΠ΅Π½ Π±ΡΡΡ ΡΡΡΠ»ΠΎΡΠ½ΡΠΌ ΠΈΠ»ΠΈ ΡΠΎΠ΄Π΅ΡΠΆΠ°ΡΡ ΡΡΡΠ»ΠΎΡΠ½ΡΠ΅ ΡΠΈΠΏΡ Π½Π° ΠΊΠ°ΠΊΠΎΠΌ-ΡΠΎ ΡΡΠΎΠ²Π½Π΅ (Π½Π°ΠΏΡΠΈΠΌΠ΅Ρ, Π·Π°ΠΏΡΠ΅ΡΠ΅Π½Ρ ΡΠΊΠ°Π·Π°ΡΠ΅Π»ΠΈ Π½Π° Π·Π°ΠΏΠΈΡΠΈ, Ρ ΠΊΠΎΡΠΎΡΡΡ ΠΎΠ΄Π½ΠΎ ΠΈΠ· ΠΏΠΎΠ»Π΅ΠΉ ΠΈΠΌΠ΅Π΅Ρ ΡΡΡΠ»ΠΎΡΠ½ΡΠΉ ΡΠΈΠΏ). ΠΡΠΈΡΠΈΠ½Π° ΡΠ°ΠΊΠΎΠ³ΠΎ ΠΎΠ³ΡΠ°Π½ΠΈΡΠ΅Π½ΠΈΡ ΠΏΡΠΎΡΡΠ°: ΡΠΊΠ°Π·Π°ΡΠ΅Π»ΠΈ ΡΠ΅Π°Π»ΠΈΠ·ΡΡΡΡΡ Π½Π΅ΡΠΏΡΠ°Π²Π»ΡΠ΅ΠΌΡΠΌ ΠΊΠΎΠ΄ΠΎΠΌ, ΠΊΠΎΡΠΎΡΡΠΉ Π½Π΅ ΡΠΏΡΠ°Π²Π»ΡΠ΅ΡΡΡ ΡΠ±ΠΎΡΡΠΈΠΊΠΎΠΌ ΠΌΡΡΠΎΡΠ°. ΠΡΠ»ΠΈ Π² ΠΏΠ°ΠΌΡΡΠΈ, Π½Π° ΠΊΠΎΡΠΎΡΡΡ ΡΠΊΠ°Π·ΡΠ²Π°Π΅Ρ ΡΠΊΠ°Π·Π°ΡΠ΅Π»Ρ, ΡΠΎΠ΄Π΅ΡΠΆΠ°ΡΡΡ ΡΡΡΠ»ΠΊΠΈ Π½Π° ΡΠΏΡΠ°Π²Π»ΡΠ΅ΠΌΡΠ΅ ΠΏΠ΅ΡΠ΅ΠΌΠ΅Π½Π½ΡΠ΅, ΡΠΎ ΠΎΠ½ΠΈ ΡΡΠ°Π½ΠΎΠ²ΡΡΡΡ Π½Π΅Π΄Π΅ΠΉΡΡΠ²ΠΈΡΠ΅Π»ΡΠ½ΡΠΌΠΈ ΠΏΠΎΡΠ»Π΅ ΠΎΡΠ΅ΡΠ΅Π΄Π½ΠΎΠΉ ΡΠ±ΠΎΡΠΊΠΈ ΠΌΡΡΠΎΡΠ°. ΠΡΠΊΠ»ΡΡΠ΅Π½ΠΈΠ΅ ΡΠΎΡΡΠ°Π²Π»ΡΡΡ Π΄ΠΈΠ½Π°ΠΌΠΈΡΠ΅ΡΠΊΠΈΠ΅ ΠΌΠ°ΡΡΠΈΠ²Ρ ΠΈ ΡΡΡΠΎΠΊΠΈ, ΠΎΠ±ΡΠ°Π±Π°ΡΡΠ²Π°Π΅ΠΌΡΠ΅ ΠΎΡΠΎΠ±ΡΠΌ ΠΎΠ±ΡΠ°Π·ΠΎΠΌ. Π’ΠΎ Π΅ΡΡΡ, ΠΌΠΎΠΆΠ½ΠΎ Π΄Π΅Π»Π°ΡΡ ΡΠΊΠ°Π·Π°ΡΠ΅Π»ΠΈ Π½Π° Π·Π°ΠΏΠΈΡΠΈ, ΡΠΎΠ΄Π΅ΡΠΆΠ°ΡΠΈΠ΅ Π² ΠΊΠ°ΡΠ΅ΡΡΠ²Π΅ ΠΏΠΎΠ»Π΅ΠΉ ΡΡΡΠΎΠΊΠΈ ΠΈ Π΄ΠΈΠ½Π°ΠΌΠΈΡΠ΅ΡΠΊΠΈΠ΅ ΠΌΠ°ΡΡΠΈΠ²Ρ.
ΠΠΎΡΠ»Π΅Π΄ΠΎΠ²Π°ΡΠ΅Π»ΡΠ½ΠΎΡΡΠΈ
ΠΠΎΡΠ»Π΅Π΄ΠΎΠ²Π°ΡΠ΅Π»ΡΠ½ΠΎΡΡΡ - ΡΡΠΎ Π½Π°Π±ΠΎΡ Π΄Π°Π½Π½ΡΡ , ΠΊΠΎΡΠΎΡΡΠ΅ ΠΌΠΎΠΆΠ½ΠΎ ΠΏΠ΅ΡΠ΅Π±ΡΠ°ΡΡ ΠΎΠ΄ΠΈΠ½ Π·Π° Π΄ΡΡΠ³ΠΈΠΌ Π² Π½Π΅ΠΊΠΎΡΠΎΡΠΎΠΌ ΠΏΠΎΡΡΠ΄ΠΊΠ΅. Π ΡΠ°Π·Π½ΠΎΠ²ΠΈΠ΄Π½ΠΎΡΡΡΠΌ ΠΏΠΎΡΠ»Π΅Π΄ΠΎΠ²Π°ΡΠ΅Π»ΡΠ½ΠΎΡΡΠ΅ΠΉ ΠΎΡΠ½ΠΎΡΡΡΡΡ ΠΎΠ΄Π½ΠΎΠΌΠ΅ΡΠ½ΡΠ΅ Π΄ΠΈΠ½Π°ΠΌΠΈΡΠ΅ΡΠΊΠΈΠ΅ ΠΌΠ°ΡΡΠΈΠ²Ρ array of T, ΡΠΏΠΈΡΠΊΠΈ List<T>, Π΄Π²ΡΡΠ²ΡΠ·Π½ΡΠ΅ ΡΠΏΠΈΡΠΊΠΈ LinkedList<T>, ΠΌΠ½ΠΎΠΆΠ΅ΡΡΠ²Π° HashSet<T> ΠΈ SortedSet<T>.
Π’ΠΈΠΏ ΠΏΠΎΡΠ»Π΅Π΄ΠΎΠ²Π°ΡΠ΅Π»ΡΠ½ΠΎΡΡΠΈ ΠΊΠΎΠ½ΡΡΡΡΠΈΡΡΠ΅ΡΡΡ ΡΠ»Π΅Π΄ΡΡΡΠΈΠΌ ΠΎΠ±ΡΠ°Π·ΠΎΠΌ:
sequence of ΡΠΈΠΏ ΡΠ»Π΅ΠΌΠ΅Π½ΡΠΎΠ²
ΠΠΎΡΠ»Π΅Π΄ΠΎΠ²Π°ΡΠ΅Π»ΡΠ½ΠΎΡΡΠΈ Π΄ΠΎΡΡΡΠΏΠ½Ρ ΡΠΎΠ»ΡΠΊΠΎ Π½Π° ΡΡΠ΅Π½ΠΈΠ΅. ΠΡΠ»ΠΈ ΡΡΠ΅Π±ΡΠ΅ΡΡΡ ΠΈΠ·ΠΌΠ΅Π½ΠΈΡΡ ΠΏΠΎΡΠ»Π΅Π΄ΠΎΠ²Π°ΡΠ΅Π»ΡΠ½ΠΎΡΡΡ, ΡΠΎ Π³Π΅Π½Π΅ΡΠΈΡΡΠ΅ΡΡΡ ΠΈ Π²ΠΎΠ·Π²ΡΠ°ΡΠ°Π΅ΡΡΡ Π½ΠΎΠ²Π°Ρ ΠΏΠΎΡΠ»Π΅Π΄ΠΎΠ²Π°ΡΠ΅Π»ΡΠ½ΠΎΡΡΡ.
Π’ΠΈΠΏ sequence of T ΡΠ²Π»ΡΠ΅ΡΡΡ ΡΠΈΠ½ΠΎΠ½ΠΈΠΌΠΎΠΌ ΡΠΈΠΏΠ° .NET System.Collections.Generic.IEnumerable<T>, Π° ΠΏΠΎΡΠ»Π΅Π΄ΠΎΠ²Π°ΡΠ΅Π»ΡΠ½ΠΎΡΡΡ - ΡΠΈΠ½ΠΎΠ½ΠΈΠΌΠΎΠΌ ΠΎΠ±ΡΠ΅ΠΊΡΠ° ΡΠΈΠΏΠ°, ΠΏΠΎΠ΄Π΄Π΅ΡΠΆΠΈΠ²Π°ΡΡΠ΅Π³ΠΎ ΠΈΠ½ΡΠ΅ΡΡΠ΅ΠΉΡ System.Collections.Generic.IEnumerable<T>.
ΠΠ½ΠΈΡΠΈΠ°Π»ΠΈΠ·Π°ΡΠΈΡ ΠΏΠΎΡΠ»Π΅Π΄ΠΎΠ²Π°ΡΠ΅Π»ΡΠ½ΠΎΡΡΠΈΠΠΎΡΠ»Π΅Π΄ΠΎΠ²Π°ΡΠ΅Π»ΡΠ½ΠΎΡΡΡ ΠΈΠ½ΠΈΡΠΈΠ°Π»ΠΈΠ·ΠΈΡΡΠ΅ΡΡΡ Ρ ΠΏΠΎΠΌΠΎΡΡΡ ΡΡΠ°Π½Π΄Π°ΡΡΠ½ΡΡ ΡΡΠ½ΠΊΡΠΈΠΉ Seq, SeqGen, SeqFill, SeqWhile, SeqRandom, SeqRandomReal, ReadSeqInteger, ReadSeqReal, ReadSeqString. ΠΠ°ΠΏΡΠΈΠΌΠ΅Ρ:
var s: sequence of integer;
s := Seq(1,3,5);
s.Println;
s := SeqGen(1,x->x*2,10);
writeln(s);
Π₯ΡΠ°Π½Π΅Π½ΠΈΠ΅ ΠΏΠΎΡΠ»Π΅Π΄ΠΎΠ²Π°ΡΠ΅Π»ΡΠ½ΠΎΡΡΠΈΠΠΎΡΠ»Π΅Π΄ΠΎΠ²Π°ΡΠ΅Π»ΡΠ½ΠΎΡΡΡ Π½Π΅ Ρ ΡΠ°Π½ΠΈΡΡΡ ΡΠ΅Π»ΠΈΠΊΠΎΠΌ Π² ΠΏΠ°ΠΌΡΡΠΈ. ΠΠ»Π΅ΠΌΠ΅Π½ΡΡ ΠΏΠΎΡΠ»Π΅Π΄ΠΎΠ²Π°ΡΠ΅Π»ΡΠ½ΠΎΡΡΠΈ Π³Π΅Π½Π΅ΡΠΈΡΡΡΡΡΡ Π°Π»Π³ΠΎΡΠΈΡΠΌΠΈΡΠ΅ΡΠΊΠΈ ΠΈ Π²ΠΎΠ·Π²ΡΠ°ΡΠ°ΡΡΡΡ ΠΏΠΎ ΠΎΠ΄Π½ΠΎΠΌΡ ΠΏΡΠΈ ΠΎΠ±Ρ ΠΎΠ΄Π΅.
Π’Π°ΠΊΠΈΠΌ ΠΎΠ±ΡΠ°Π·ΠΎΠΌ, Π² ΠΊΠΎΠ΄Π΅
var s := SeqFill(1,10000000);
writeln(s.Sum());
ΠΎΡΠ½ΠΎΠ²Π½ΠΎΠ΅ Π²ΡΠ΅ΠΌΡ Π²ΡΠΏΠΎΠ»Π½Π΅Π½ΠΈΡ Π±ΡΠ΄Π΅Ρ Π·Π°Π½ΠΈΠΌΠ°ΡΡ Π²ΡΠΎΡΠ°Ρ ΡΡΡΠΎΠΊΠ°, Π° Π²ΡΠΏΠΎΠ»Π½Π΅Π½ΠΈΠ΅ ΠΏΠ΅ΡΠ²ΠΎΠΉ ΡΡΡΠΎΠΊΠΈ Π±ΡΠ΄Π΅Ρ ΡΠ²ΠΎΠ΄ΠΈΡΡΡΡ Π»ΠΈΡΡ ΠΊ Π·Π°ΠΏΠΎΠΌΠΈΠ½Π°Π½ΠΈΡ Π°Π»Π³ΠΎΡΠΈΡΠΌΠ° Π³Π΅Π½Π΅ΡΠ°ΡΠΈΠΈ ΠΏΠΎΡΠ»Π΅Π΄ΠΎΠ²Π°ΡΠ΅Π»ΡΠ½ΠΎΡΡΠΈ Π² ΠΏΠ΅ΡΠ΅ΠΌΠ΅Π½Π½ΠΎΠΉ s.
Π‘ΠΎΠ΅Π΄ΠΈΠ½Π΅Π½ΠΈΠ΅ ΠΏΠΎΡΠ»Π΅Π΄ΠΎΠ²Π°ΡΠ΅Π»ΡΠ½ΠΎΡΡΠ΅ΠΉΠΠ²Π΅ ΠΏΠΎΡΠ»Π΅Π΄ΠΎΠ²Π°ΡΠ΅Π»ΡΠ½ΠΎΡΡΠΈ ΠΎΠ΄Π½ΠΎΠ³ΠΎ ΡΠΈΠΏΠ° ΠΌΠΎΠ³ΡΡ Π±ΡΡΡ ΡΠΎΠ΅Π΄ΠΈΠ½Π΅Π½Ρ ΠΎΠΏΠ΅ΡΠ°ΡΠΈΠ΅ΠΉ +, ΠΏΡΠΈ ΡΡΠΎΠΌ Π²ΡΠΎΡΠ°Ρ ΠΏΠΎΡΠ»Π΅Π΄ΠΎΠ²Π°ΡΠ΅Π»ΡΠ½ΠΎΡΡΡ Π΄ΠΎΠΏΠΈΡΡΠ²Π°Π΅ΡΡΡ Π² ΠΊΠΎΠ½Π΅Ρ ΠΏΠ΅ΡΠ²ΠΎΠΉ. ΠΠ°ΠΏΡΠΈΠΌΠ΅Ρ:
Seq(1,2,3) + Seq(5,6,7)
Seq(1,2,3) + Arr(5,6,7)
ΠΡΠΎΠΌΠ΅ ΡΠΎΠ³ΠΎ, ΠΊ ΠΏΠΎΡΠ»Π΅Π΄ΠΎΠ²Π°ΡΠ΅Π»ΡΠ½ΠΎΡΡΠΈ Π½Π΅ΠΊΠΎΡΠΎΡΠΎΠ³ΠΎ ΡΠΈΠΏΠ° ΠΌΠΎΠΆΠ½ΠΎ ΠΏΡΠΈΡΠΎΠ΅Π΄ΠΈΠ½ΠΈΡΡ ΠΎΠΏΠ΅ΡΠ°ΡΠΈΠ΅ΠΉ + Π·Π½Π°ΡΠ΅Π½ΠΈΠ΅ ΡΡΠΎΠ³ΠΎ ΡΠΈΠΏΠ° ΠΊΠ°ΠΊ ΠΏΠ΅ΡΠ²ΡΠΉ ΠΈΠ»ΠΈ ΠΏΠΎΡΠ»Π΅Π΄Π½ΠΈΠΉ ΡΠ»Π΅ΠΌΠ΅Π½Ρ ΠΏΠΎΡΠ»Π΅Π΄ΠΎΠ²Π°ΡΠ΅Π»ΡΠ½ΠΎΡΡΠΈ, Π½Π°ΠΏΡΠΈΠΌΠ΅Ρ:
Seq(1,2,3) + 5
3 + Seq(5,6,7)
3 + Seq(5,6,7) + 9
ΠΠΏΠ΅ΡΠ°ΡΠΈΡ + ΡΠ²Π»ΡΠ΅ΡΡΡ ΡΠΎΠΊΡΠ°ΡΡΠ½Π½ΡΠΌ Π²Π°ΡΠΈΠ°Π½ΡΠΎΠΌ ΠΎΠΏΠ΅ΡΠ°ΡΠΈΠΈ Concat.
Π¦ΠΈΠΊΠ» ΠΏΠΎ ΠΏΠΎΡΠ»Π΅Π΄ΠΎΠ²Π°ΡΠ΅Π»ΡΠ½ΠΎΡΡΠΈΠΠ»Π΅ΠΌΠ΅Π½ΡΡ ΠΏΠΎΡΠ»Π΅Π΄ΠΎΠ²Π°ΡΠ΅Π»ΡΠ½ΠΎΡΡΠΈ ΠΌΠΎΠΆΠ½ΠΎ ΠΎΠ±ΠΎΠΉΡΠΈ Ρ ΠΏΠΎΠΌΠΎΡΡΡ ΡΠΈΠΊΠ»Π° foreach:
foreach var x in s do
if x>2 then
Print(x);
Π‘ΠΎΠ²ΠΌΠ΅ΡΡΠΈΠΌΠΎΡΡΡ ΠΏΠΎ ΠΏΡΠΈΡΠ²Π°ΠΈΠ²Π°Π½ΠΈΡΠΠ΅ΡΠ΅ΠΌΠ΅Π½Π½ΠΎΠΉ ΡΠΈΠΏΠ° ΠΏΠΎΡΠ»Π΅Π΄ΠΎΠ²Π°ΡΠ΅Π»ΡΠ½ΠΎΡΡΡ Ρ ΡΠ»Π΅ΠΌΠ΅Π½ΡΠ°ΠΌΠΈ ΡΠΈΠΏΠ° T ΠΌΠΎΠΆΠ½ΠΎ ΠΏΡΠΈΡΠ²ΠΎΠΈΡΡ ΠΎΠ΄Π½ΠΎΠΌΠ΅ΡΠ½ΡΠΉ ΠΌΠ°ΡΡΠΈΠ² array of T, ΡΠΏΠΈΡΠΎΠΊ List<T>, Π΄Π²ΡΡΠ²ΡΠ·Π½ΡΠΉ ΡΠΏΠΈΡΠΎΠΊ LinkedList<T>, ΠΌΠ½ΠΎΠΆΠ΅ΡΡΠ²ΠΎ HashSet<T> ΠΈΠ»ΠΈ SortedSet<T>, Π° ΡΠ°ΠΊΠΆΠ΅ ΠΎΠ±ΡΠ΅ΠΊΡ Π»ΡΠ±ΠΎΠ³ΠΎ ΠΊΠ»Π°ΡΡΠ°, ΠΏΠΎΠ΄Π΄Π΅ΡΠΆΠΈΠ²Π°ΡΡΠ΅Π³ΠΎ ΠΈΠ½ΡΠ΅ΡΡΠ΅ΠΉΡ System.Collections.Generic.IEnumerable<T>.
Π‘ΡΠ°Π½Π΄Π°ΡΡΠ½ΡΠ΅ ΡΡΠ½ΠΊΡΠΈΠΈ ΠΈ ΠΌΠ΅ΡΠΎΠ΄ΡΠΠ»Ρ ΠΏΠΎΡΠ»Π΅Π΄ΠΎΠ²Π°ΡΠ΅Π»ΡΠ½ΠΎΡΡΠ΅ΠΉ Π΄ΠΎΡΡΡΠΏΠ½Ρ ΠΌΠ½ΠΎΠ³ΠΎΡΠΈΡΠ»Π΅Π½Π½ΡΠ΅ ΠΌΠ΅ΡΠΎΠ΄Ρ ΠΎΠ±ΡΠ°Π±ΠΎΡΠΊΠΈ ΠΏΠΎΡΠ»Π΅Π΄ΠΎΠ²Π°ΡΠ΅Π»ΡΠ½ΠΎΡΡΠ΅ΠΉ.
ΠΠ»Ρ ΠΏΠΎΡΠ»Π΅Π΄ΠΎΠ²Π°ΡΠ΅Π»ΡΠ½ΠΎΡΡΠ΅ΠΉ Π΄ΠΎΡΡΡΠΏΠ½Ρ ΡΠ°ΠΊΠΆΠ΅ ΡΡΠ°Π½Π΄Π°ΡΡΠ½ΡΠ΅ ΡΡΠ½ΠΊΡΠΈΠΈ ΠΎΠ±ΡΠ°Π±ΠΎΡΠΊΠΈ ΠΏΠΎΡΠ»Π΅Π΄ΠΎΠ²Π°ΡΠ΅Π»ΡΠ½ΠΎΡΡΠ΅ΠΉ.
ΠΠ°ΠΏΠΈΡΠΈ
ΠΠ°ΠΏΠΈΡΡ ΠΏΡΠ΅Π΄ΡΡΠ°Π²Π»ΡΠ΅Ρ ΡΠΎΠ±ΠΎΠΉ Π½Π°Π±ΠΎΡ ΡΠ»Π΅ΠΌΠ΅Π½ΡΠΎΠ² ΡΠ°Π·Π½ΡΡ ΡΠΈΠΏΠΎΠ², ΠΊΠ°ΠΆΠ΄ΡΠΉ ΠΈΠ· ΠΊΠΎΡΠΎΡΡΡ ΠΈΠΌΠ΅Π΅Ρ ΡΠ²ΠΎΠ΅ ΠΈΠΌΡ ΠΈ Π½Π°Π·ΡΠ²Π°Π΅ΡΡΡ ΠΏΠΎΠ»Π΅ΠΌ Π·Π°ΠΏΠΈΡΠΈ. Π’ΠΈΠΏ Π·Π°ΠΏΠΈΡΠΈ Π² ΠΊΠ»Π°ΡΡΠΈΡΠ΅ΡΠΊΠΎΠΌ ΡΠ·ΡΠΊΠ΅ ΠΠ°ΡΠΊΠ°Π»Ρ ΠΎΠΏΠΈΡΡΠ²Π°Π΅ΡΡΡ ΡΠ»Π΅Π΄ΡΡΡΠΈΠΌ ΠΎΠ±ΡΠ°Π·ΠΎΠΌ:
record
ΠΎΠΏΠΈΡΠ°Π½ΠΈΡ ΠΏΠΎΠ»Π΅ΠΉ
end
Π³Π΄Π΅ ΠΎΠΏΠΈΡΠ°Π½ΠΈΡ ΠΏΠΎΠ»Π΅ΠΉ ΠΈΠΌΠ΅Π΅Ρ ΡΠ°ΠΊΠΎΠΉ ΠΆΠ΅ Π²ΠΈΠ΄, ΡΡΠΎ ΠΈ ΡΠ°Π·Π΄Π΅Π» ΠΎΠΏΠΈΡΠ°Π½ΠΈΡ ΠΏΠ΅ΡΠ΅ΠΌΠ΅Π½Π½ΡΡ Π±Π΅Π· ΠΊΠ»ΡΡΠ΅Π²ΠΎΠ³ΠΎ ΡΠ»ΠΎΠ²Π° var.
ΠΠ°ΠΏΡΠΈΠΌΠ΅Ρ:
type
Person = record
Name: string;
Age: integer;
end;
ΠΠ΅ΡΠ΅ΠΌΠ΅Π½Π½ΡΠ΅ ΡΠΈΠΏΠ° Π·Π°ΠΏΠΈΡΡΠΠ΅ΡΠ΅ΠΌΠ΅Π½Π½ΡΠ΅ ΡΠΈΠΏΠ° Π·Π°ΠΏΠΈΡΡ Ρ ΡΠ°Π½ΡΡ Π² Π½Π΅ΠΏΡΠ΅ΡΡΠ²Π½ΠΎΠΌ Π±Π»ΠΎΠΊΠ΅ ΠΏΠ°ΠΌΡΡΠΈ Π·Π½Π°ΡΠ΅Π½ΠΈΡ Π²ΡΠ΅Ρ ΠΏΠΎΠ»Π΅ΠΉ Π·Π°ΠΏΠΈΡΠΈ.
ΠΠ»Ρ Π΄ΠΎΡΡΡΠΏΠ° ΠΊ ΠΏΠΎΠ»ΡΠΌ Π·Π°ΠΏΠΈΡΠ΅ΠΉ ΠΈΡΠΏΠΎΠ»ΡΠ·ΡΠ΅ΡΡΡ ΡΠΎΡΠ΅ΡΠ½Π°Ρ Π½ΠΎΡΠ°ΡΠΈΡ:
var p: Person;
begin
p.Name := 'ΠΠ²Π°Π½ΠΎΠ²';
p.Age := 20;
writeln(p); // (ΠΠ²Π°Π½ΠΎΠ²,20)
end.
ΠΠΎ ΡΠΌΠΎΠ»ΡΠ°Π½ΠΈΡ ΠΏΡΠΎΡΠ΅Π΄ΡΡΠ° write Π²ΡΠ²ΠΎΠ΄ΠΈΡ ΡΠΎΠ΄Π΅ΡΠΆΠΈΠΌΠΎΠ΅ Π²ΡΠ΅Ρ ΠΏΠΎΠ»Π΅ΠΉ Π·Π°ΠΏΠΈΡΠΈ Π² ΠΊΡΡΠ³Π»ΡΡ ΡΠΊΠΎΠ±ΠΊΠ°Ρ ΡΠ΅ΡΠ΅Π· Π·Π°ΠΏΡΡΡΡ.
ΠΠ΅ΡΠΎΠ΄Ρ ΠΈ ΠΌΠΎΠ΄ΠΈΡΠΈΠΊΠ°ΡΠΎΡΡ Π΄ΠΎΡΡΡΠΏΠ° Π΄Π»Ρ Π·Π°ΠΏΠΈΡΠ΅ΠΉΠ PascalABC.NET Π²Π½ΡΡΡΠΈ Π·Π°ΠΏΠΈΡΠ΅ΠΉ Π΄ΠΎΠΏΡΡΡΠΈΠΌΠΎ ΠΎΠΏΡΠ΅Π΄Π΅Π»ΡΡΡ ΠΌΠ΅ΡΠΎΠ΄Ρ ΠΈ ΡΠ²ΠΎΠΉΡΡΠ²Π°, Π° ΡΠ°ΠΊΠΆΠ΅ ΠΈΡΠΏΠΎΠ»ΡΠ·ΠΎΠ²Π°ΡΡ ΠΌΠΎΠ΄ΠΈΡΠΈΠΊΠ°ΡΠΎΡΡ Π΄ΠΎΡΡΡΠΏΠ°. Π’Π°ΠΊΠΈΠΌ ΠΎΠ±ΡΠ°Π·ΠΎΠΌ, ΠΎΠΏΠΈΡΠ°Π½ΠΈΠ΅ Π·Π°ΠΏΠΈΡΠΈ Π² PascalABC.NET ΠΈΠΌΠ΅Π΅Ρ Π²ΠΈΠ΄:
record
ΡΠ΅ΠΊΡΠΈΡ1
ΡΠ΅ΠΊΡΠΈΡ2
...
end
ΠΠ°ΠΆΠ΄Π°Ρ ΡΠ΅ΠΊΡΠΈΡ ΠΈΠΌΠ΅Π΅Ρ Π²ΠΈΠ΄:
ΠΌΠΎΠ΄ΠΈΡΠΈΠΊΠ°ΡΠΎΡ Π΄ΠΎΡΡΡΠΏΠ°
ΠΎΠΏΠΈΡΠ°Π½ΠΈΡ ΠΏΠΎΠ»Π΅ΠΉ
ΠΎΠ±ΡΡΠ²Π»Π΅Π½ΠΈΡ ΠΈΠ»ΠΈ ΠΎΠΏΠΈΡΠ°Π½ΠΈΡ ΠΌΠ΅ΡΠΎΠ΄ΠΎΠ² ΠΈ ΠΎΠΏΠΈΡΠ°Π½ΠΈΡ ΡΠ²ΠΎΠΉΡΡΠ²
ΠΠΎΠ΄ΠΈΡΠΈΠΊΠ°ΡΠΎΡ Π΄ΠΎΡΡΡΠΏΠ° Π² ΠΏΠ΅ΡΠ²ΠΎΠΉ ΡΠ΅ΠΊΡΠΈΠΈ ΠΌΠΎΠΆΠ΅Ρ ΠΎΡΡΡΡΡΡΠ²ΠΎΠ²Π°ΡΡ, Π² ΡΡΠΎΠΌ ΡΠ»ΡΡΠ°Π΅ ΠΏΠΎΠ΄ΡΠ°Π·ΡΠΌΠ΅Π²Π°Π΅ΡΡΡ ΠΌΠΎΠ΄ΠΈΡΠΈΠΊΠ°ΡΠΎΡ public (Π²ΡΠ΅ ΡΠ»Π΅Π½Ρ ΠΎΡΠΊΡΡΡΡ).
ΠΠ°ΠΏΡΠΈΠΌΠ΅Ρ:
type
Person = record
private
Name: string;
Age: integer;
public
constructor Create(Name: string; Age: integer);
begin
Self.Name := Name;
Self.Age := Age;
end;
procedure Print;
end;
procedure Person.Print;
begin
writelnFormat('ΠΠΌΡ: {0} ΠΠΎΠ·ΡΠ°ΡΡ: {1}', Name, Age);
end;
ΠΠ°ΠΊ ΠΈ Π² ΠΊΠ»Π°ΡΡΠ°Ρ , ΠΌΠ΅ΡΠΎΠ΄Ρ ΠΌΠΎΠ³ΡΡ ΠΎΠΏΠΈΡΡΠ²Π°ΡΡΡΡ ΠΊΠ°ΠΊ Π²Π½ΡΡΡΠΈ, ΡΠ°ΠΊ ΠΈ Π²Π½Π΅ ΡΠ΅Π»Π° Π·Π°ΠΏΠΈΡΠΈ. Π ΠΏΡΠΈΠΌΠ΅ΡΠ΅ Π²ΡΡΠ΅ ΠΊΠΎΠ½ΡΡΡΡΠΊΡΠΎΡ ΠΎΠΏΠΈΡΡΠ²Π°Π΅ΡΡΡ Π²Π½ΡΡΡΠΈ Π·Π°ΠΏΠΈΡΠΈ, Π° ΠΌΠ΅ΡΠΎΠ΄ Print ΠΎΠ±ΡΡΠ²Π»ΡΠ΅ΡΡΡ Π²Π½ΡΡΡΠΈ, Π° ΠΎΠΏΠΈΡΡΠ²Π°Π΅ΡΡΡ Π²Π½Π΅ ΡΠ΅Π»Π° Π·Π°ΠΏΠΈΡΠΈ. ΠΠ΅ΡΠΎΠ΄-ΠΊΠΎΠ½ΡΡΡΡΠΊΡΠΎΡ Π²ΡΠ΅Π³Π΄Π° ΠΈΠΌΠ΅Π΅Ρ ΠΈΠΌΡ Create ΠΈ ΠΏΡΠ΅Π΄Π½Π°Π·Π½Π°ΡΠ΅Π½ Π΄Π»Ρ ΠΈΠ½ΠΈΡΠΈΠ°Π»ΠΈΠ·Π°ΡΠΈΠΈ ΠΏΠΎΠ»Π΅ΠΉ Π·Π°ΠΏΠΈΡΠΈ.
ΠΠ½ΠΈΡΠΈΠ°Π»ΠΈΠ·Π°ΡΠΈΡ Π·Π°ΠΏΠΈΡΠ΅ΠΉΠΡΠΈ ΠΎΠΏΠΈΡΠ°Π½ΠΈΠΈ ΠΏΠ΅ΡΠ΅ΠΌΠ΅Π½Π½ΠΎΠΉ ΠΈΠ»ΠΈ ΠΊΠΎΠ½ΡΡΠ°Π½ΡΡ ΡΠΈΠΏΠ° Π·Π°ΠΏΠΈΡΡ ΠΌΠΎΠΆΠ½ΠΎ ΠΈΡΠΏΠΎΠ»ΡΠ·ΠΎΠ²Π°ΡΡ ΠΈΠ½ΠΈΡΠΈΠ°Π»ΠΈΠ·Π°ΡΠΎΡ Π·Π°ΠΏΠΈΡΠΈ (ΠΊΠ°ΠΊ ΠΈ Π² Delphi Object Pascal):
const p: Person = (Name: 'ΠΠ΅ΡΡΠΎΠ²Π°'; Age: 18);
var p: Person := (Name: 'ΠΠ²Π°Π½ΠΎΠ²'; Age: 20);
ΠΠΎΠ½ΡΡΡΡΠΊΡΠΎΡΡ Π΄Π»Ρ Π·Π°ΠΏΠΈΡΠ΅ΠΉ ΠΈΠΌΠ΅ΡΡ ΡΠΎΡ ΠΆΠ΅ ΡΠΈΠ½ΡΠ°ΠΊΡΠΈΡ, ΡΡΠΎ ΠΈ Π΄Π»Ρ ΠΊΠ»Π°ΡΡΠΎΠ². ΠΠ΄Π½Π°ΠΊΠΎ, Π² ΠΎΡΠ»ΠΈΡΠΈΠ΅ ΠΎΡ ΠΊΠ»Π°ΡΡΠΎΠ², Π²ΡΠ·ΠΎΠ² ΠΊΠΎΠ½ΡΡΡΡΠΊΡΠΎΡΠ° Π·Π°ΠΏΠΈΡΠΈ Π½Π΅ ΡΠΎΠ·Π΄Π°Π΅Ρ Π½ΠΎΠ²ΡΠΉ ΠΎΠ±ΡΠ΅ΠΊΡ Π² Π΄ΠΈΠ½Π°ΠΌΠΈΡΠ΅ΡΠΊΠΎΠΉ ΠΏΠ°ΠΌΡΡΠΈ, Π° ΡΠΎΠ»ΡΠΊΠΎ ΠΈΠ½ΠΈΡΠΈΠ°Π»ΠΈΠ·ΠΈΡΡΠ΅Ρ ΠΏΠΎΠ»Ρ Π·Π°ΠΏΠΈΡΠΈ:
var p: Person := new Person('ΠΠ²Π°Π½ΠΎΠ²',20);
ΠΠΎΠ»Π΅Π΅ ΡΡΠ°Π΄ΠΈΡΠΈΠΎΠ½Π½ΠΎ Π² Π·Π°ΠΏΠΈΡΠΈ ΠΎΠΏΡΠ΅Π΄Π΅Π»ΡΠ΅ΡΡΡ ΠΎΠ±ΡΡΠ½ΡΠΉ ΠΌΠ΅ΡΠΎΠ΄-ΠΏΡΠΎΡΠ΅Π΄ΡΡΠ°, ΡΡΠ°Π΄ΠΈΡΠΈΠΎΠ½Π½ΠΎ Ρ ΠΈΠΌΠ΅Π½Π΅ΠΌ Init, ΠΈΠ½ΠΈΡΠΈΠ°Π»ΠΈΠ·ΠΈΡΡΡΡΠ°Ρ ΠΏΠΎΠ»Ρ Π·Π°ΠΏΠΈΡΠΈ:
type
Person = record
...
public
procedure Init(Name: string; Age: integer);
begin
Self.Name := Name;
Self.Age := Age;
end;
...
end;
...
var p: Person;
p.Init('ΠΠ²Π°Π½ΠΎΠ²',20);
Π ΡΠΈΡΡΠ΅ΠΌΠ½ΠΎΠΌ ΠΌΠΎΠ΄ΡΠ»Π΅ ΠΎΠΏΡΠ΅Π΄Π΅Π»Π΅Π½Π° ΡΠ°ΠΊΠΆΠ΅ ΡΡΠ½ΠΊΡΠΈΡ Rec, ΠΊΠΎΡΠΎΡΠ°Ρ ΡΠΎΠ·Π΄Π°Π΅Ρ ΠΏΠ΅ΡΠ΅ΠΌΠ΅Π½Π½ΡΡ ΡΠΈΠΏΠ° Π·Π°ΠΏΠΈΡΡ Π½Π° Π»Π΅ΡΡ:
var p := Rec('ΠΠ²Π°Π½ΠΎΠ²',20);
Println(p); // (ΠΠ²Π°Π½ΠΎΠ²,20)
Π’ΠΈΠΏ ΡΡΠΎΠΉ Π·Π°ΠΏΠΈΡΠΈ - Π±Π΅Π·ΡΠΌΡΠ½Π½ΡΠΉ. ΠΠΎΠ»Ρ Π΄Π°Π½Π½ΠΎΠΉ Π·Π°ΠΏΠΈΡΠΈ Π°Π²ΡΠΎΠΌΠ°ΡΠΈΡΠ΅ΡΠΊΠΈ ΠΈΠΌΠ΅Π½ΡΡΡΡΡ Item1, Item2 ΠΈ Ρ.Π΄.:
Println(p.Item1, p.Item2); // ΠΠ²Π°Π½ΠΎΠ² 20
ΠΡΠ»ΠΈΡΠΈΠ΅ Π·Π°ΠΏΠΈΡΠ΅ΠΉ ΠΎΡ ΠΊΠ»Π°ΡΡΠΎΠ²Π‘ΠΏΠΈΡΠΎΠΊ ΠΎΡΠ»ΠΈΡΠΈΠΉ ΠΌΠ΅ΠΆΠ΄Ρ Π·Π°ΠΏΠΈΡΡΠΌΠΈ ΠΈ ΠΊΠ»Π°ΡΡΠ°ΠΌΠΈ ΠΏΡΠΈΠ²ΠΎΠ΄ΡΡΡΡ Π½ΠΈΠΆΠ΅:
* ΠΠ°ΠΏΠΈΡΡ ΠΏΡΠ΅Π΄ΡΡΠ°Π²Π»ΡΠ΅Ρ ΡΠΎΠ±ΠΎΠΉ ΡΠ°Π·ΠΌΠ΅ΡΠ½ΡΠΉ ΡΠΈΠΏ (ΠΏΠ΅ΡΠ΅ΠΌΠ΅Π½Π½ΡΠ΅ ΡΠΈΠΏΠ° Π·Π°ΠΏΠΈΡΡ ΡΠ°ΡΠΏΠΎΠ»Π°Π³Π°ΡΡΡΡ Π½Π° ΡΡΠ΅ΠΊΠ΅).
* ΠΠ°ΠΏΠΈΡΠΈ Π½Π΅Π»ΡΠ·Ρ Π½Π°ΡΠ»Π΅Π΄ΠΎΠ²Π°ΡΡ; ΠΎΡ Π·Π°ΠΏΠΈΡΠ΅ΠΉ ΡΠ°ΠΊΠΆΠ΅ Π½Π΅Π»ΡΠ·Ρ Π½Π°ΡΠ»Π΅Π΄ΠΎΠ²Π°ΡΡ (ΠΎΡΠΌΠ΅ΡΠΈΠΌ, ΡΡΠΎ Π·Π°ΠΏΠΈΡΠΈ, ΡΠ΅ΠΌ Π½Π΅ ΠΌΠ΅Π½Π΅Π΅, ΠΌΠΎΠ³ΡΡ ΡΠ΅Π°Π»ΠΈΠ·ΠΎΠ²ΡΠ²Π°ΡΡ ΠΈΠ½ΡΠ΅ΡΡΠ΅ΠΉΡΡ). Π .NET ΡΠΈΠΏ Π·Π°ΠΏΠΈΡΠΈ Π½Π΅ΡΠ²Π½ΠΎ ΠΏΡΠ΅Π΄ΠΏΠΎΠ»Π°Π³Π°Π΅ΡΡΡ Π½Π°ΡΠ»Π΅Π΄Π½ΠΈΠΊΠΎΠΌ ΡΠΈΠΏΠ° System.ValueType ΠΈ ΡΠ΅Π°Π»ΠΈΠ·ΡΠ΅ΡΡΡ struct-ΡΠΈΠΏΠΎΠΌ.
* ΠΡΠ»ΠΈ Π² Π·Π°ΠΏΠΈΡΠΈ Π½Π΅ ΡΠΊΠ°Π·Π°Π½ ΠΌΠΎΠ΄ΠΈΡΠΈΠΊΠ°ΡΠΎΡ Π΄ΠΎΡΡΡΠΏΠ°, ΡΠΎ ΠΏΠΎ ΡΠΌΠΎΠ»ΡΠ°Π½ΠΈΡ ΠΏΠΎΠ΄ΡΠ°Π·ΡΠΌΠ΅Π²Π°Π΅ΡΡΡ ΠΌΠΎΠ΄ΠΈΡΠΈΠΊΠ°ΡΠΎΡ public (Π²ΡΠ΅ ΡΠ»Π΅Π½Ρ ΠΎΡΠΊΡΡΡΡ), Π° Π² ΠΊΠ»Π°ΡΡΠ΅ - internal.
ΠΡΠ²ΠΎΠ΄ ΠΏΠ΅ΡΠ΅ΠΌΠ΅Π½Π½ΠΎΠΉ ΡΠΈΠΏΠ° Π·Π°ΠΏΠΈΡΡΠΠΎ ΡΠΌΠΎΠ»ΡΠ°Π½ΠΈΡ ΠΏΡΠΎΡΠ΅Π΄ΡΡΠ° write Π΄Π»Ρ ΠΏΠ΅ΡΠ΅ΠΌΠ΅Π½Π½ΠΎΠΉ ΡΠΈΠΏΠ° Π·Π°ΠΏΠΈΡΡ Π²ΡΠ²ΠΎΠ΄ΠΈΡ ΡΠΎΠ΄Π΅ΡΠΆΠΈΠΌΠΎΠ΅ Π²ΡΠ΅Ρ Π΅Ρ ΠΏΡΠ±Π»ΠΈΡΠ½ΡΡ ΡΠ²ΠΎΠΉΡΡΠ² ΠΈ ΠΏΠΎΠ»Π΅ΠΉ Π² ΠΊΡΡΠ³Π»ΡΡ ΡΠΊΠΎΠ±ΠΊΠ°Ρ ΡΠ΅ΡΠ΅Π· Π·Π°ΠΏΡΡΡΡ. Π§ΡΠΎΠ±Ρ ΠΈΠ·ΠΌΠ΅Π½ΠΈΡΡ ΡΡΠΎ ΠΏΠΎΠ²Π΅Π΄Π΅Π½ΠΈΠ΅, Π² Π·Π°ΠΏΠΈΡΠΈ ΡΠ»Π΅Π΄ΡΠ΅Ρ ΠΏΠ΅ΡΠ΅ΠΎΠΏΡΠ΅Π΄Π΅Π»ΠΈΡΡ Π²ΠΈΡΡΡΠ°Π»ΡΠ½ΡΠΉ ΠΌΠ΅ΡΠΎΠ΄ ToString ΠΊΠ»Π°ΡΡΠ° Object - Π² ΡΡΠΎΠΌ ΡΠ»ΡΡΠ°Π΅ ΠΈΠΌΠ΅Π½Π½ΠΎ ΠΎΠ½ Π±ΡΠ΄Π΅Ρ Π²ΡΠ·ΡΠ²Π°ΡΡΡΡ ΠΏΡΠΈ Π²ΡΠ²ΠΎΠ΄Π΅ ΠΎΠ±ΡΠ΅ΠΊΡΠ°.
ΠΠ°ΠΏΡΠΈΠΌΠ΅Ρ:
type
Person = record