Perl6 - рдХрдХреНрд╖рд╛рдПрдВ

1. Perl6 рдореЗрдВ рдЪрд░ рдФрд░ рд╢рд╛рдмреНрджрд┐рдХ рдХреЗ рд╕рд╛рде рдХрд╛рдо рдХрд░рдиреЗ рдХреА рд╡рд┐рд╢реЗрд╖рддрд╛рдПрдВ
2. рдкрд░реНрд▓ 6 - рдЪрд░, рдЕрдирд╛рдо рдмреНрд▓реЙрдХреЛрдВ рдкрд░ рд╕рдВрдЪрд╛рд▓рди
3. рдкрд░реНрд▓ 6 - рд╕рд╢рд░реНрдд рдХрдерди, рд▓реВрдк
4. рдкрд░реНрд▓ 6 - рдХрд╛рд░реНрдпреЛрдВ рдХреЗ рд╕рд╛рде рдХрд╛рдо рдХрд░реЗрдВ

рдкрд┐рдЫрд▓реЗ рдХреБрдЫ рджрд┐рдиреЛрдВ рд╕реЗ, рдореИрдВ рдкрд░реНрд▓ 6 рдореЗрдВ рд╡рд╕реНрддреБрдУрдВ рдХреЗ рд╕рд╛рде рдХрд╛рдо рдХрд░рдиреЗ рдкрд░ рдПрдХ рдЦрдВрдб рдкрдврд╝ рд░рд╣рд╛ рд╣реВрдВред рджреБрд░реНрднрд╛рдЧреНрдп рд╕реЗ, рдореИрдВ рдХреБрдЫ рдмрд┐рдВрджреБрдУрдВ рдХреЛ рдирд╣реАрдВ рд╕рдордЭ рд╕рдХрд╛, рдФрд░ рдореБрдЭреЗ рдЖрд╢рд╛ рд╣реИ рдХрд┐ рдЬреЛ рд▓реЛрдЧ рдкрд╣рд▓реЗ рд╕реЗ рд╣реА рдЙрдиреНрд╣реЗрдВ рд╕рдордЭрдиреЗ рдореЗрдВ рд╕рдХреНрд╖рдо рд╣реИрдВ, рд╡реЗ рдЖрдкрдХреЛ рдмрддрд╛рдПрдВрдЧреЗ рдХрд┐ рдорд╛рдорд▓рд╛ рдХреНрдпрд╛ рд╣реИред рдкрд╣рд▓реЗ рдХреА рддрд░рд╣, рд╕рднреА рд╡рд░реНрдгрд┐рдд рд╡рд┐рд╢реЗрд╖рддрд╛рдПрдВ рдЫреЛрдЯреЗ рдкреНрд░рдпреЛрдЧреЛрдВ рдпрд╛ рдЙрджрд╛рд╣рд░рдгреЛрдВ рдХреЗ рд╕рд╛рде рдмрддрд╛рдПрдВрдЧреА рдХрд┐ рдпрд╣ рдХреИрд╕реЗ рдХрд╛рдо рдХрд░рддрд╛ рд╣реИ, рдпрд╛ рдЗрд╕рдХрд╛ рдЙрдкрдпреЛрдЧ рдХреИрд╕реЗ рдХрд░реЗрдВред
рдЖрдЗрдП рд╢реБрд░реВ:


Perl6 рдореЗрдВ, рдХреНрд▓рд╛рд╕ рдШреЛрд╖рд┐рдд рдХрд░рдиреЗ рдХреЗ рджреЛ рд╕рдВрднрд╛рд╡рд┐рдд рддрд░реАрдХреЗ рд╣реИрдВ:
рдкреВрд░реА рдлрд╛рдЗрд▓ рдХреЛ рдХреНрд▓рд╛рд╕ рдбрд┐рд╕реНрдХреНрд░рд┐рдкреНрд╢рди рд▓реЗрдВ
class Name; has $.field; ... method Func() {...}; 

рдПрдХ рдирд┐рд░реНрдорд╛рдг рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд░ рдПрдХ рд╡рд░реНрдЧ -Declare
 class Name { has $.field; } 

C ++ рдореЗрдВ, рдЖрдк рдХреЗрд╡рд▓ рдХрдХреНрд╖рд╛ рдХрд╛ рдирд╛рдо рдирд┐рд░реНрджрд┐рд╖реНрдЯ рдХрд░ рд╕рдХрддреЗ рд╣реИрдВ, рдмрд╛рдж рдореЗрдВ рдЙрд╕рдХрд╛ рд╡рд┐рд╡рд░рдг рджреЗ рд╕рдХрддреЗ рд╣реИрдВ:
 class Name {...}; my $var = Name.new; class Name {has $.elem}; 

рдпрджрд┐ рдЕрдВрддрд┐рдо рдкрдВрдХреНрддрд┐ рдирд╣реАрдВ рд╣реИ, рддреЛ рд╕рдВрдХрд▓рди рддреНрд░реБрдЯрд┐ рд╣реЛрдЧреА
рдирд┐рдореНрдирд▓рд┐рдЦрд┐рдд рдХрд░рдирд╛ рднреА рд╕рдВрднрд╡ рд╣реИ:
 my $className = class Name { has $.field is rw; } my $var1 = Name.new; my $var2 = $className.new; $var1.field = 10; $var2.field = 5; say $var1.field, ' ', $var2.field; 

рдирддреАрдЬрддрди, рд╣рдо рд▓рд╛рдЗрди '10 5 'рджреЗрдЦреЗрдВрдЧреЗ
рдЖрдк рдирд┐рд░реНрдорд╛рдг рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд░рдХреЗ рдПрдХ рдЕрдирд╛рдо рд╡рд░реНрдЧ рдмрдирд╛ рд╕рдХрддреЗ рд╣реИрдВ
 my $anonClass = class :: {has $.field}; my $var = $anonClass.new; 

рдкрд╣рд▓реЗ рд╕реЗ рд╣реА рдмрдирд╛рдП рдЧрдП рдЪрд░ рдХрд╛ рдЙрдкрдпреЛрдЧ рдирдП рдЪрд░ рдмрдирд╛рдиреЗ рдХреЗ рд▓рд┐рдП рдХрд┐рдпрд╛ рдЬрд╛ рд╕рдХрддрд╛ рд╣реИ:
 my $var1 = ClassName.new; my $var2 = $var1.new; 

рд╣рд╛рд▓рд╛рдБрдХрд┐, рдбреЗрдЯрд╛ рдХреА рдкреНрд░рддрд┐рд▓рд┐рдкрд┐ рдмрдирд╛рдП рдмрд┐рдирд╛ рдирд┐рд░реНрдорд╛рдг рд╣реЛрддрд╛ рд╣реИред

рдЕрдм рдШреЛрд╖рдгрд╛ рдХрд░рддреЗ рд╕рдордп рдЖрдк рдХреНрдпрд╛ рдирд┐рд░реНрджрд┐рд╖реНрдЯ рдХрд░ рд╕рдХрддреЗ рд╣реИрдВ рдЗрд╕рдХреЗ рдмрд╛рд░реЗ рдореЗрдВ рдЕрдзрд┐рдХ рдЬрд╛рдирдХрд╛рд░реА:
рдлрд╝реАрд▓реНрдб рдХреЛ рджрд░реНрд╢рд╛рдиреЗ рдХреЗ рд▓рд┐рдП рдХреАрд╡рд░реНрдб рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд┐рдпрд╛ рдЬрд╛рддрд╛ рд╣реИ:
 class Name { has Int $.publicMember; has $!privateMember; has @.publicArray is rw; has %!privateHash; has $.a is rw; has $.b is rw = '  '; } my $v = Name.new; say $v.publicMember; # "Int()" #$v.publicMember = 10 - ,  readonly #say $v!privateMember -  $v.mas = 1, 2, 3; #say $v!privateHash -  $va = 'new value'; say $vb # "  " 

рдпрд╣ рднреА рдзреНрдпрд╛рди рджреЗрдиреЗ рдпреЛрдЧреНрдп рд╣реИ рдХрд┐ рд╡рд┐рдзрд┐ рдХреЗ рд╢рд░реАрд░ рдореЗрдВ рдЖрдк рдирд┐рдЬреА рдЪрд░ рдХреЛ рдмрджрд▓ рд╕рдХрддреЗ рд╣реИрдВ, рднрд▓реЗ рд╣реА рдпрд╣ рдЖрд╕рд╛рдиреА рд╕реЗ рд╣реЛ (рд╣рд╛рд▓рд╛рдВрдХрд┐, рдореИрдВ рдпрд╣ рдирд╣реАрдВ рдХрд╣ рд╕рдХрддрд╛ рдХрд┐ рдпрд╣ рдЬрд┐рд╕ рддрд░рд╣ рдХрд╛ рдЗрд░рд╛рджрд╛ рд╣реИ, рдпрд╛ рд╡рд░реНрдЪреБрдЕрд▓ рдорд╢реАрди рдХреА рдЕрдкреВрд░реНрдгрддрд╛ рдЗрд╕реЗ рдкреНрд░рднрд╛рд╡рд┐рдд рдХрд░рддреА рд╣реИ)

рдХреНрд▓рд╛рд╕ рдХреЗ рддрд░реАрдХреЗ рд╡рд┐рдзрд┐ рдХреАрд╡рд░реНрдб рджреНрд╡рд╛рд░рд╛ рджрд░реНрд╢рд╛рдП рдЧрдП рд╣реИрдВ:
 class Name { has $!privateMember = 5; method GetPrivateMember() { return $!privateMember; } method SetPrivateMember($value) { $!privateMember = $value if $value > 0; } } my $var = Name.new; say $var.GetPrivateMember; $var.SetPrivateMember(10); $var.SetPrivateMember: 20; 


рддрд░реАрдХреЛрдВ рдХреЛ рдирд┐рдЬреА рдШреЛрд╖рд┐рдд рдХрд┐рдпрд╛ рдЬрд╛ рд╕рдХрддрд╛ рд╣реИ:
 method !PrivateMethod() { say 'Hello!'; } 

рдЖрдк рдирд┐рд░реНрджрд┐рд╖реНрдЯ рдХрд░ рд╕рдХрддреЗ рд╣реИрдВ рдХрд┐ рдХрд┐рд╕ рдЪрд░ рдХреЗ рдорд╛рдзреНрдпрдо рд╕реЗ рдСрдмреНрдЬреЗрдХреНрдЯ (рдЗрдирд╡реЛрдХреЗрдВрдЯ) рдЙрдкрд▓рдмреНрдз рд╣реЛрдЧрд╛ рдЬрд┐рд╕рдХреЗ рд▓рд┐рдП рд╡рд┐рдзрд┐ рдХрд╣рд╛ рдЬрд╛рддрд╛ рд╣реИ:
 method Func($self: $param1, $param2) { $self.Func2($param1); } 

рдЪрд░ рдирд╛рдо $ рд╕реНрд╡ рдирд╣реАрдВ рд╣реЛрдирд╛ рдЪрд╛рд╣рд┐рдП
 method Func($someName: $param1, $param2) { $someName!PrivateMethod($param1); } 

рдпрджрд┐ рдпрд╣ рдЪрд░ рдирд┐рд░реНрджрд┐рд╖реНрдЯ рдирд╣реАрдВ рд╣реИ, рддреЛ рд╡рд╕реНрддреБ рд╕реНрд╡рдпрдВ 'рд╕реНрд╡рдпрдВ' рдХреЗ рд░реВрдк рдореЗрдВ рдЙрдкрд▓рдмреНрдз рд╣реЛрдЧреА
 method Func($param1, $param2) { self.PublicMethod($param1); self!PrivateMethod($param2); } 


рд╡рд┐рдзрд┐ рдирд┐рдХрд╛рдп рдореЗрдВ рдЗрд╕ рд╡рд░реНрдЧ рдХреА рдПрдХ рдЕрдиреНрдп рд╡рд┐рдзрд┐ рдХреЛ рдХреЙрд▓ рдХрд░рдиреЗ рдХреЗ рд▓рд┐рдП, рдирд┐рдореНрдирд▓рд┐рдЦрд┐рдд рдирд┐рд░реНрдорд╛рдг рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд░реЗрдВ
 self!PrivateMethod(); self.PublicMethod(); 

рдЙрджрд╛рд╣рд░рдг рдХреЗ рд▓рд┐рдП
 class Name { method !A() { say "!A"; } method A($s:) { $s!A(); } method B() { self!A; self.C; say "B"; } method C() { say "C"; } } 

рдпрд╣ рднреА рд╕рдВрднрд╡ рд╣реИ рдХрд┐ рдХреЙрд▓ рд╕реНрд╡ред рдФрд░ рд╕реНрд╡!

рд╡рд┐рдзрд┐ рдирд┐рдХрд╛рдп рдореЗрдВ рд╡рд░реНрдЧ рдХреЗ рдХреНрд╖реЗрддреНрд░реЛрдВ рддрдХ рдкрд╣реБрдБрдЪрдиреЗ рдХреЗ рд▓рд┐рдП, рд╕рдорд╛рди рдирд╛рдореЛрдВ рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд┐рдпрд╛ рдЬрд╛рддрд╛ рд╣реИ, рдЬреИрд╕реЗ рдШреЛрд╖рдгрд╛ рдХреЗ рд╕рд╛рде:
 class Name { has $.a; has $!b; method PrintValues() { say $.a; say $!b; } } 

рдЖрдк self.a рднреА рд▓рд┐рдЦ рд╕рдХрддреЗ рд╣реИрдВ рд▓реЗрдХрд┐рди рдЖрдк self! B рдирд╣реАрдВ рд▓рд┐рдЦ рд╕рдХрддреЗ, рдХреНрдпреЛрдВрдХрд┐ рдЗрд╕ рдорд╛рдорд▓реЗ рдореЗрдВ, рдЗрд╕рдХрд╛ рдорддрд▓рдм рдЪрд░ рдмреА рддрдХ рдкрд╣реБрдВрдЪрдиреЗ рдХреЗ рдмрдЬрд╛рдп рдирд┐рдЬреА рдкрджреНрдзрддрд┐ рдмреА рдХреЛ рд▓рд╛рдЧреВ рдХрд░рдирд╛ рд╣реЛрдЧрд╛

рдпрджрд┐ рдШреЛрд╖рд┐рдд рдХрд┐рдП рдЬрд╛рдиреЗ рдкрд░ рд╡рд░реНрдЧ рдХрд╛ рдирд╛рдо rw рд╣реИ, рддреЛ рдЗрд╕ рдлрд╝реАрд▓реНрдб рдореЗрдВ рдирд┐рд╣рд┐рдд рд╕рднреА рдлрд╝реАрд▓реНрдб рд╡реНрдпрдХреНрддрд┐рдЧрдд рд░реВрдк рд╕реЗ рдкреНрд░рддреНрдпреЗрдХ рдлрд╝реАрд▓реНрдб рдХреЗ рд▓рд┐рдП rw рдирд┐рд░реНрджрд┐рд╖реНрдЯ рдХрд┐рдП рдмрд┐рдирд╛ рд▓реЗрдЦрди рдпреЛрдЧреНрдп рд╣реЛрдВрдЧреЗ:
 class Name is rw { has $.a; has $.b; } 


рдЖрдк рдХрдХреНрд╖рд╛рдУрдВ рдореЗрдВ рднреА рд╕рдмрдорд┐рдереЛрдб рдШреЛрд╖рд┐рдд рдХрд░ рд╕рдХрддреЗ рд╣реИрдВред рд╕рд╛рдзрд╛рд░рдг рддрд░реАрдХреЛрдВ рд╕реЗ рдЙрдирдХрд╛ рдЕрдВрддрд░ рдпрд╣ рд╣реИ рдХрд┐ рдмрдЪреНрдЪреЗ рдХреЗ рд╡рд░реНрдЧ рдореЗрдВ рд╕рдмрдорд┐рде рдХреЛ рд╡рд┐рд░рд╛рд╕рдд рдореЗрдВ рдирд╣реАрдВ рдорд┐рд▓реЗрдЧрд╛ред

рдЕрдм рдбрд┐рдЬрд╛рдЗрдирд░реЛрдВ рдХреЗ рдмрд╛рд░реЗ рдореЗрдВ
рдЖрдк рдирд┐рд░реНрджрд┐рд╖реНрдЯ рдХрд░ рд╕рдХрддреЗ рд╣реИрдВ рдХрд┐ рдХрдХреНрд╖рд╛ рдХреА рдПрдХ рдирдИ рдЖрд╡реГрддреНрддрд┐ рдмрдирд╛рддреЗ рд╕рдордп рдХреМрди рд╕реЗ рдХрд╛рд░реНрдп рдХрд░реЗрдВ:
 class Name { has $.arg1 is rw = 10; has $!arg2; submethod BUILD(:$namedArg1, :$namedArg2) { self.arg1 = $namedArg1 if $namedArg1>0; $!arg2 = $namedArg2; } } my $var = Name.new(:namedArg2(200), :namedArg1<Hello>); 

рдПрдХ рдмрд╛рдд рд╣реИ рдЬреЛ рдореБрдЭреЗ рд╕рдордЭ рдореЗрдВ рдирд╣реАрдВ рдЖрддреА рд╣реИ: рдореБрдЭреЗ self.arg1 рд▓рд┐рдЦрдирд╛ рдерд╛ рдФрд░ $ .arg1 рдирд╣реАрдВ, рдХреНрдпреЛрдВрдХрд┐ рдореБрдЭреЗ рдпрд╣ рддреНрд░реБрдЯрд┐ рдорд┐рд▓реА "рдЖрдВрд╢рд┐рдХ рд░реВрдк рд╕реЗ рдирд┐рд░реНрдорд┐рдд рд╡рд╕реНрддреБрдУрдВ рдкрд░ рд╡рд░реНрдЪреБрдЕрд▓ рдХреЙрд▓ $ .a рдХрд╛ рдЙрдкрдпреЛрдЧ рдирд╣реАрдВ рдХрд┐рдпрд╛ рдЬрд╛ рд╕рдХрддрд╛ рд╣реИ"ред
рдореИрдВ рдпрд╣ рдирд╣реАрдВ рд╕рдордЭ рд╕рдХрддрд╛ рдХрд┐ рдпрд╣ рдпреЛрдЬрдирд╛рдмрджреНрдз рд╣реИ рдпрд╛ рдпрд╣ рд╕рд┐рд░реНрдл рдПрдХ рд╣рд┐рд╕реНрд╕рд╛ рд╣реИ рдЬрд┐рд╕реЗ рдЕрднреА рддрдХ рдкреВрд░реА рддрд░рд╣ рд╕реЗ рдХрд╛рдо рдирд╣реАрдВ рдХрд┐рдпрд╛ рдЧрдпрд╛ рд╣реИред рд▓реЗрдХрд┐рди рдХрд┐рд╕реА рднреА рдорд╛рдорд▓реЗ рдореЗрдВ, рдЗрд╕ рддрд░рд╣ рдХреЗ рдПрдХ рдирд┐рд░реНрдорд╛рддрд╛ рдареАрдХ рдХрд╛рдо рдХрд░рддрд╛ рд╣реИред

рдЖрдк рдПрдХ рдбрд┐рд╕реНрдЯреНрд░реЙрдХреНрдЯрд░ рднреА рдирд┐рд░реНрджрд┐рд╖реНрдЯ рдХрд░ рд╕рдХрддреЗ рд╣реИрдВ рдЬрд┐рд╕реЗ рдЧрд╛рд░рдмреЗрдЬ рдХреЛрд▓реЛрд░реЗрдХреНрдЯрд░ рджреНрд╡рд╛рд░рд╛ рд╕реНрд╡рдЪрд╛рд▓рд┐рдд рд░реВрдк рд╕реЗ рдХрд╣рд╛ рдЬрд╛рдПрдЧрд╛ред
 submethod DESTROY() { say 'DESTROY'; } 

рд▓реЗрдХрд┐рди рдЗрд╕ рдмрд╛рд░, рдореИрдВ рдкреНрд░рдпреЛрдЧреЛрдВ рдХреЗ рджреМрд░рд╛рди рдЙрдкрд░реЛрдХреНрдд рд╢рд┐рд▓рд╛рд▓реЗрдЦ рдирд╣реАрдВ рджреЗрдЦ рд╕рдХрд╛ред рдореБрдЭреЗ рд╕рдВрджреЗрд╣ рд╣реИ рдХрд┐ рдпрд╣ рд╣рд┐рд╕реНрд╕рд╛ рднреА рдЕрднреА рддрдХ рдкреВрд░рд╛ рдирд╣реАрдВ рд╣реБрдЖ рд╣реИред

Perl6 рдореЗрдВ, рдЗрдирд╣реЗрд░рд┐рдЯреЗрдВрд╕ рдирд┐рдореНрдирд▓рд┐рдЦрд┐рдд рдирд┐рд░реНрдорд╛рдг рджреНрд╡рд╛рд░рд╛ рдЖрдпреЛрдЬрд┐рдд рдХрд┐рдпрд╛ рдЬрд╛рддрд╛ рд╣реИ:
 class Name {has $.a}; class Name2 is Name {has $.b}; my $var = Name2.new; say $var; #Name2.new(b => Any, a => Any) 


рдПрдХрд╛рдзрд┐рдХ рд╡рдВрд╢рд╛рдиреБрдХреНрд░рдо рд╕рдВрднрд╡ рд╣реИ, рдЬрд┐рд╕рдХреЗ рдкрд░рд┐рдгрд╛рдорд╕реНрд╡рд░реВрдк рдпрд╣ рдкрддрд╛ рдЪрд▓ рд╕рдХрддрд╛ рд╣реИ рдХрд┐ рдХрдХреНрд╖рд╛рдУрдВ рдореЗрдВ рдлрд╝рдВрдХреНрд╢рди рдпрд╛ рдлрд╝реАрд▓реНрдб рдХреЗ рдирд╛рдо рдореЗрд▓ рдЦрд╛рддреЗ рд╣реИрдВ:
 class Name { has $.a is rw = 10; has $.c is rw = 15; method A() {say "Name ", $.a;} } class Name2 { has $.b is rw = 20; has $.c is rw = 25; method A() {say "Name2 ", $.b;} } class Name3 is Name is Name2 { method A() { self.Name2::A(); say $.c; } } my $var = Name3.new; $var.a = 100; $var.b = 200; $var.A; 

рдЗрд╕ рд╕реНрдерд┐рддрд┐ рдореЗрдВ, рд╕реНрдХреНрд░реАрди рдкрд░ рджреЛ рд▓рд╛рдЗрдиреЗрдВ рдкреНрд░рджрд░реНрд╢рд┐рдд рд╣реЛрдВрдЧреА:
 Name2 200 15 

рдпрджрд┐ рдЖрдк рдЪрд╛рдЗрд▓реНрдб рдХреНрд▓рд╛рд╕ рдореЗрдВ рдлрд╝рдВрдХреНрд╢рди A рдХреЛ рдлрд┐рд░ рд╕реЗ рдкрд░рд┐рднрд╛рд╖рд┐рдд рдирд╣реАрдВ рдХрд░рддреЗ рд╣реИрдВ, рддреЛ Name :: A рдлрд╝рдВрдХреНрд╢рди Name2 :: A рдлрд╝рдВрдХреНрд╢рди рдХреЛ рдУрд╡рд░рд░рд╛рдЗрдб рдХрд░реЗрдЧрд╛, рдпрд╣ $ .c рдЪрд░ рдХреЗ рд╕рд╛рде рднреА рд╣реЛрддрд╛ рд╣реИред
рдЬреИрд╕рд╛ рдХрд┐ рдореИрдВрдиреЗ рдЗрд╕реЗ рд╕рдордЭрд╛, рдкрдВрдХреНрддрд┐ self.Name2 :: A (); Name2 :: A () рдореЗрдердб рд╕реЗрд▓реНрдл рдСрдмреНрдЬреЗрдХреНрдЯ рдХреЗ рд▓рд┐рдП рдирд┐рд╖реНрдкрд╛рджрд┐рдд рд╣реЛрддрд╛ рд╣реИ, рд╣рд╛рд▓рд╛рдБрдХрд┐, рдпрд╣ рдХреИрд╕реЗ рдХрд╛рдо рдХрд░рддрд╛ рд╣реИ, рдЗрд╕рдХреЗ рдмрд╛рд░реЗ рдореЗрдВ рдореЗрд░реЗ рд╕рднреА рдЕрдиреБрдорд╛рди рдЗрд╕ рддрдереНрдп рд╕реЗ рдЦрд░рд╛рдм рд╣реЛ рдЬрд╛рддреЗ рд╣реИрдВ рдХрд┐ рдПрдХ рддреНрд░реБрдЯрд┐ self.Name2 рдирд╛рдо рдХреЛ рдЬрд╛рд░реА рдХреА рдЬрд╛рддреА рд╣реИ, рдФрд░ рдЖрдк рд╕реНрд╡рдпрдВ (рдпрд╛ рдирд╛рдо 2 :: a) рдпрд╛ рдХреБрдЫ рдФрд░ рдирд╣реАрдВ рд▓рд┐рдЦ рд╕рдХрддреЗред рдЙрд╕ рддрд░рд╣ред рдореБрдЭреЗ рдЦреБрд╢реА рд╣реЛрдЧреА рдЕрдЧрд░ рдХреЛрдИ рдЬрд╛рдирдХрд╛рд░ рдореБрдЭреЗ рдмрддрд╛рдПред

рдмреЗрд╢рдХ, рдпрд╣рд╛рдВ рд╡рд░реНрдгрд┐рдд рд╡рд┐рд╢реЗрд╖рддрд╛рдПрдВ рдХреЗрд╡рд▓ рд╡рд╕реНрддреБрдУрдВ рдХреЗ рд╕рд╛рде рдЖрдк рдХреНрдпрд╛ рдХрд░ рд╕рдХрддреЗ рд╣реИрдВ, рдЗрд╕рдХрд╛ рдПрдХ рд╣рд┐рд╕реНрд╕рд╛ рд╣реИ (рдЙрджрд╛рд╣рд░рдг рдХреЗ рд▓рд┐рдП, рдореИрдВрдиреЗ рдкреНрд░рддрд┐рдирд┐рдзрд┐рдордВрдбрд▓ рдХрд╛ рднреА рдЙрд▓реНрд▓реЗрдЦ рдирд╣реАрдВ рдХрд┐рдпрд╛ рд╣реИ, рднреВрдорд┐рдХрд╛ рд╕реА ++ рдореЗрдВ рдЗрдВрдЯрд░рдлреЗрд╕ рдХрд╛ рдПрдирд╛рд▓реЙрдЧ рд╣реИрдВ), рд▓реЗрдХрд┐рди рдЕрдм рдореИрдВ рдЗрд╕ рд╡рд┐рд╖рдп рдкрд░ рдЗрддрдирд╛ рдЧрд╣рд░рд╛ рдирд╣реАрдВ рдЬрд╛рдирд╛ рдЪрд╛рд╣рддрд╛, рд▓реЗрдХрд┐рди рдЕрдзреНрдпрдпрди рдХрд░рдирд╛ рдЬрд╛рд░реА рд░рдЦрддрд╛ рд╣реВрдВ Perl6 рдХреА рдЕрдиреНрдп рд╡рд┐рд╢реЗрд╖рддрд╛рдПрдВред рдЗрд╕ рдмреАрдЪ, рднрд╛рд╖рд╛ рдореЗрдВ рдорд╣рд╛рд░рдд рд╣рд╛рд╕рд┐рд▓ рдХрд░рдиреЗ рдХреЗ рд▓рд┐рдП, рд╡рд░реНрдгрд┐рдд рдПрдХ рдкрд░реНрдпрд╛рдкреНрдд рд╣реИред

Source: https://habr.com/ru/post/In155571/


All Articles