Perl6 - рдбреЗрдЯрд╛ рдкреНрд░рдХрд╛рд░реЛрдВ рдХреЗ рд╕рд╛рде рдХрд╛рд░реНрдп рдХрд░рдирд╛

рдЕрдм рддрдХ, рд▓реЗрдЦреЛрдВ рдореЗрдВ рдХреЗрд╡рд▓ рдбреЗрдЯрд╛ рдкреНрд░рдХрд╛рд░реЛрдВ рдХрд╛ рдПрдХ рд╕рддрд╣реА рдЙрд▓реНрд▓реЗрдЦ рдХрд┐рдпрд╛ рдЧрдпрд╛ рд╣реИ - рдПрдХ рдирд┐рд╢реНрдЪрд┐рдд рдкреНрд░рдХрд╛рд░ рдХреЗ рдПрдХ рдЪрд░ рдХреЛ рдШреЛрд╖рд┐рдд рдХрд░рдирд╛, рдпрд╛ рдПрдХ рдСрдкрд░реЗрд╢рди рдХреЗ рдкрд░рд┐рдгрд╛рдо рдХреЛ рдЗрдВрдЧрд┐рдд рдХрд░рдирд╛, рд▓реЗрдХрд┐рди рд╣рдо рд╕рдм рдХрд░ рд╕рдХрддреЗ рдереЗ рд╕рдВрдХрд▓рдХ рдХреА рд╣рд░рдХрддреЛрдВ рдХреЛ рд╕рд╣рди рдХрд░рдирд╛ - "рдореИрдВ рдорд░рдирд╛ рдЪрд╛рд╣рддрд╛ рд╣реВрдВ, рдореИрдВ рдкрд░рд┐рдЬрдиреЛрдВ рдХреЛ рд╡рд╛рд░реНрдб рдХрд░рдирд╛ рдЪрд╛рд╣рддрд╛ рд╣реВрдВ, рдпрд╛ рдмрд╕ рдкреНрд░рдХрд╛рд░ рдмрджрд▓рдирд╛ рдЪрд╛рд╣рддрд╛ рд╣реВрдВред "ред
рджрд░рдЕрд╕рд▓, рдЙрди рд▓реЛрдЧреЛрдВ рдХреЗ рд▓рд┐рдП рдЬреЛ рднрдЧрд╡рд╛рди рдХреА рддрд░рд╣ рдорд╣рд╕реВрд╕ рдХрд░рдирд╛ рдЪрд╛рд╣рддреЗ рд╣реИрдВ , рдХрдо рд╕реЗ рдХрдо рдХрд┐рд╕реА рддрд░рд╣ рд╕реЗ рдЕрдкрдиреА рд▓рд┐рдкрд┐ рдореЗрдВ рдЯрд╛рдЗрдк рдХреЗ рдкреНрд░рдмрдВрдзрди рдореЗрдВ рдорд╣рддреНрд╡рдкреВрд░реНрдг рд╣реИрдВ, рдмрд┐рд▓реНрд▓реА рдХрд╛ рд╕реНрд╡рд╛рдЧрдд рд╣реИред


рддреЛ, рдорд╛рди рд▓реЗрдВ рдХрд┐ рд╣рдордиреЗ рдПрдХ рдлрд╝рдВрдХреНрд╢рди рд▓рд┐рдЦрд╛ рд╣реИ рдЬреЛ рдорд╛рдкрджрдВрдбреЛрдВ рдХреЗ рд░реВрдк рдореЗрдВ рджреЛ рдЪрд░ рд▓реЗрддрд╛ рд╣реИ:
sub Func($a, $b) {...} 


рдФрд░ рд╣рдореЗрдВ рдлрд╝рдВрдХреНрд╢рди рдХреЛ рд╣рдореЗрд╢рд╛ рдПрдХ рддрд░реАрдХреЗ рд╕реЗ рдирд┐рд╖реНрдкрд╛рджрд┐рдд рдХрд░рдиреЗ рдХреА рдЖрд╡рд╢реНрдпрдХрддрд╛ рд╣реЛрддреА рд╣реИ, рд▓реЗрдХрд┐рди рдпрджрд┐ рдПрдХ рднрд┐рдиреНрдирд╛рддреНрдордХ рд╕рдВрдЦреНрдпрд╛ рдФрд░ рдПрдХ рд╕реНрдЯреНрд░рд┐рдВрдЧ рдХреЛ рдЕрдЪрд╛рдирдХ рдкреИрд░рд╛рдореАрдЯрд░ рдХреЗ рд░реВрдк рдореЗрдВ рдкрд╛рд░рд┐рдд рдХрд┐рдпрд╛ рдЬрд╛рддрд╛ рд╣реИ, рдпрд╛ рдЗрд╕рдХреЗ рд╡рд┐рдкрд░реАрдд, рддреЛ рдЕрдиреНрдп рдХреНрд░рд┐рдпрд╛рдПрдВ рдХрд░реЗрдВред

рдЖрдЗрдП рдЫреЛрдЯреЗ рд╕реЗ рд╢реБрд░реВ рдХрд░реЗрдВ - рд╣рдо рдпрд╣ рдкрддрд╛ рд▓рдЧрд╛рдПрдВрдЧреЗ рдХрд┐ рдкреНрд░рддреНрдпреЗрдХ рдЪрд░ рдХреЗ рд▓рд┐рдП рд╣рдорд╛рд░реЗ рдкрд╛рд╕ рдХрд┐рд╕ рдкреНрд░рдХрд╛рд░ рдХрд╛ рдбреЗрдЯрд╛ рд╣реИ, рдЗрд╕рдХреЗ рд▓рд┐рдП рд╣рдо WHAT рдкрджреНрдзрддрд┐ рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд░рддреЗ рд╣реИрдВ, рдЬреЛ рдЯрд╛рдЗрдк рдСрдмреНрдЬреЗрдХреНрдЯ рд▓реМрдЯрд╛рдПрдЧрд╛ - рдбреЗрдЯрд╛ рдкреНрд░рдХрд╛рд░ (рдЙрджрд╛рд╣рд░рдг рдХреЗ рд▓рд┐рдП, рдорд╛рди "(Int)" рдХрд╛ рд╕рдВрдХреЗрдд рджреЗрдиреЗ рд╡рд╛рд▓реА рд╡рд╕реНрддреБ "рд╡рд╛рдкрд╕ рд▓реМрдЯрд╛ рджреА рдЬрд╛рдПрдЧреА")ред рдпрд╣ рдзреНрдпрд╛рди рджрд┐рдпрд╛ рдЬрд╛рдирд╛ рдЪрд╛рд╣рд┐рдП рдХрд┐ рдпрд╣ рд╡рд╣ рд╡рд╕реНрддреБ рд╣реИ рдЬрд┐рд╕реЗ рд▓реМрдЯрд╛рдпрд╛ рдЬрд╛рддрд╛ рд╣реИ, рди рдХрд┐ рд╕реНрдЯреНрд░рд┐рдВрдЧ, рдФрд░ рджреЛ рдкреНрд░рдХрд╛рд░реЛрдВ рдХреА рдПрдХ рд╕рд╛рдзрд╛рд░рдг рддреБрд▓рдирд╛, рдЙрджрд╛рд╣рд░рдг рдХреЗ рд▓рд┐рдП, == рдпрд╛ eq рд╕реЗ рдХрд╛рдо рдирд╣реАрдВ рдЪрд▓реЗрдЧрд╛ред рдкреНрд░рдХрд╛рд░ рдХреЗ рд╕рд╛рде рдкреНрд░рд╛рдкреНрдд рд╡рд╕реНрддреБ рдХреА рддреБрд▓рдирд╛ рдХрд░рдиреЗ рдХреЗ рд▓рд┐рдП, рд╣рдо рд╕реНрдорд╛рд░реНрдЯ рддреБрд▓рдирд╛ рдСрдкрд░реЗрдЯрд░ '~~' рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд░реЗрдВрдЧреЗ:
 sub Func($a, $b) { $condition = ( ($a.WHAT ~~ (Rat)) ?& ($b.WHAT ~~ (Str)) ); $condition ?|= ( ($a.WHAT ~~ (Str)) ?& ($b.WHAT ~~ (Rat)) ); if ($condition) { #`(SomeWork) } else { #`{AnotherWork} } } 

(рдЪреВрд╣рд╛) рдФрд░ (рд╕реНрдЯреНрд░) рдХреНрд░рдорд╢рдГ рд╡рд╛рд╕реНрддрд╡рд┐рдХ рд╕рдВрдЦреНрдпрд╛ рдФрд░ рддрд╛рд░ рдХреЗ рдкреНрд░рдХрд╛рд░ рд╣реИрдВред
рдЙрди рд▓реЛрдЧреЛрдВ рдХреЗ рд▓рд┐рдП рдЬреЛ рдкрд╣рд▓реЗ рд╕реЗ рд╣реА рднреВрд▓ рдЧрдП рд╣реИрдВ? & - рддрд╛рд░реНрдХрд┐рдХ "рдФрд░", | - рддрд╛рд░реНрдХрд┐рдХ "рдпрд╛"ред

рдФрд░ рдЗрд╕рд▓рд┐рдП, рд╣рдордиреЗ рд╕реАрдЦрд╛ рдХрд┐ рдХрд┐рд╕реА рдЪрд░ рдХреЗ рдореВрд▓реНрдп рдХреЛ рдХреИрд╕реЗ рдирд┐рд░реНрдзрд╛рд░рд┐рдд рдХрд┐рдпрд╛ рдЬрд╛рдП, рдФрд░ рдЗрд╕рдХреЗ рдЖрдзрд╛рд░ рдкрд░ рдХреБрдЫ рдХрд╛рд░реНрд░рд╡рд╛рдИ рдХреА рдЬрд╛рдПред рд▓реЗрдХрд┐рди рдЖрдЗрдП рджреЗрдЦреЗрдВ рдХрд┐ рдХрд┐рди рдорд╛рдорд▓реЛрдВ рдореЗрдВ рдРрд╕рд╛ рдХрд░рдирд╛ рдЬрд░реВрд░реА рд╣реИ:
 my Int $a; sub Func($p) { $a = $p; } Func(10); Func("Test"); 

рд╣рдорд╛рд░реЗ рдорд╛рдорд▓реЗ рдореЗрдВ, рд╕реНрдХреНрд░рд┐рдкреНрдЯ рддрдм рдорд░ рдЬрд╛рддреА рд╣реИ рдЬрдм рд╡рд╣ рдПрдХ рд╕реНрдЯреНрд░рд┐рдВрдЧ рдХреЛ рдПрдХ рдЪрд░ рдХреЛ рдЕрд╕рд╛рдЗрди рдХрд░рдиреЗ рдХреА рдХреЛрд╢рд┐рд╢ рдХрд░рддрд╛ рд╣реИ рдЬрд┐рд╕рдореЗрдВ рдХреЗрд╡рд▓ рдкреВрд░реНрдгрд╛рдВрдХ рд╣реЛ рд╕рдХрддреЗ рд╣реИрдВред

рд╣рдо рдЕрдкрдиреЗ рдЙрджрд╛рд╣рд░рдг рдХреЛ рдереЛрдбрд╝рд╛ рдареАрдХ рдХрд░реЗрдВрдЧреЗ рдФрд░ рдирд┐рдореНрдирд▓рд┐рдЦрд┐рдд рд▓рд┐рдЦреЗрдВрдЧреЗ:
  $a = +($p); 

рдирддреАрдЬрддрди, рд╣рдо рддреНрд░реБрдЯрд┐ рдХреЛ рднреА рдкрдХрдбрд╝рддреЗ рд╣реИрдВ, рдФрд░ рд╕реНрдХреНрд░рд┐рдкреНрдЯ рдорд░ рдЬрд╛рддреА рд╣реИ, рдФрд░ рддреНрд░реБрдЯрд┐ рдЕрд╕рд╛рдЗрдирдореЗрдВрдЯ рдХреЗ рдмрд╛рд░реЗ рдореЗрдВ рдирд╣реАрдВ рд╣реИ, рд▓реЗрдХрд┐рди рд╕рдВрдЦреНрдпрд╛рддреНрдордХ рд╕рдВрджрд░реНрдн рдореЗрдВ рдЧрд▓рдд рдкреНрд░рдХрд╛рд░ рдХреЗ рдмрд╛рд░реЗ рдореЗрдВ рд╣реИ, рдЬрд┐рд╕рдореЗрдВ рд╕реЗ рд╣рдо рдирд┐рд╖реНрдХрд░реНрд╖ рдирд┐рдХрд╛рд▓рддреЗ рд╣реИрдВ рдХрд┐ рдирд┐рдЬреА рд╕рдВрджрд░реНрдн рдХреЗрд╡рд▓ рдкреНрд░рдХрд╛рд░ рдХреЗ рдкреНрд░рддрд┐рдмрдВрдзреЛрдВ рдХреЛ рдЬреЛрдбрд╝рддреЗ рд╣реИрдВ, рдФрд░ рдпрд╣ рдХрд┐ рдореИрдиреБрдЕрд▓ рд░реВрдкрд╛рдВрддрд░рдг рдХреЗ рд▓рд┐рдП рд╣рдореЗрдВ рдЪрд╛рд╣рд┐рдП рдХреБрдЫ рдФрд░ред

рдЖрдЗрдП рдирд┐рдореНрдирд▓рд┐рдЦрд┐рдд рдирд┐рд░реНрдорд╛рдг рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд░рдиреЗ рдХрд╛ рдкреНрд░рдпрд╛рд╕ рдХрд░реЗрдВ:
  $a = Int($p); 

рдпрд╣ рдкрд╣рд▓реЗ рд╕реЗ рдмреЗрд╣рддрд░ рд╣реИ, рдХреНрдпреЛрдВрдХрд┐ рдпрджрд┐ рд╣рдо рдХрдИ рдкреНрд░рдХрд╛рд░ (рд░реИрдЯ) рдкрд╛рд╕ рдХрд░рддреЗ рд╣реИрдВ, рддреЛ рдЗрд╕реЗ рдЯрд╛рдЗрдк (рдЗрдВрдЯ) рдореЗрдВ рдмрджрд▓ рджрд┐рдпрд╛ рдЬрд╛рдПрдЧрд╛, рд▓реЗрдХрд┐рди рдпрджрд┐ рд╣рдо рдПрдХ рд╕реНрдЯреНрд░рд┐рдВрдЧ рдкрд╛рд╕ рдХрд░рддреЗ рд╣реИрдВ, рддреЛ рд╣рдореЗрдВ рд╕реНрдЯреНрд░рд┐рдВрдЧ рдХреЛ рдПрдХ рдирдВрдмрд░ рдореЗрдВ рдкрд░рд┐рд╡рд░реНрддрд┐рдд рдХрд░рдиреЗ рдореЗрдВ рдПрдХ рддреНрд░реБрдЯрд┐ рдорд┐рд▓реЗрдЧреА, рдЕрд░реНрдерд╛рддреН, рд╕реНрдЯреНрд░рд┐рдВрдЧ рдХреА рддрд░рд╣ рджрд┐рдЦрдирд╛ рдЪрд╛рд╣рд┐рдП 10 рд╡реЗрдВ рдирдВрдмрд░ рд╕рд┐рд╕реНрдЯрдо рдореЗрдВ рдирдВрдмрд░ред
рдЕрдм рддрдХ, рдореБрдЭреЗ рд╕реНрдХреНрд░рд┐рдкреНрдЯ рдХреЛ рдЖрдЧреЗ рдХрд╛рдо рдХрд░рдиреЗ рдХреЗ рд▓рд┐рдП рдХреЗрд╡рд▓ рдПрдХ рд╣реА рд░рд╛рд╕реНрддрд╛ рдорд┐рд▓рд╛ рд╣реИ - рдЕрдкрд╡рд╛рджреЛрдВ рдХреЛ рдкрдХрдбрд╝рдирд╛ред рдореЗрд░реА рд░рд╛рдп рдореЗрдВ рдпрд╣ рд╕рдмрд╕реЗ рддрд╛рд░реНрдХрд┐рдХ рдХрд╛рд░реНрд░рд╡рд╛рдИ рд╣реИ, рд▓реЗрдХрд┐рди рд╣рдо рдЗрд╕ рдмрд╛рд░реЗ рдореЗрдВ рдирд┐рдореНрдирд▓рд┐рдЦрд┐рдд рд▓реЗрдЦреЛрдВ рдореЗрдВ рдмрд╛рдд рдХрд░реЗрдВрдЧреЗ

рдЗрд╕рдХреЗ рдЕрд▓рд╛рд╡рд╛, рдпрджрд┐ рдлрд╝рдВрдХреНрд╢рди рд╡рд┐рд╡рд░рдг рд╕реЗ рдореЗрд▓ рдирд╣реАрдВ рдЦрд╛рддрд╛ рдорд╛рди рд╡рд╛рдкрд╕ рдХрд░рдиреЗ рдХрд╛ рдкреНрд░рдпрд╛рд╕ рдХрд░рддрд╛ рд╣реИ, рддреЛ рд╣рдорд╛рд░реА рд╕реНрдХреНрд░рд┐рдкреНрдЯ рдорд░ рд╕рдХрддреА рд╣реИ:
 sub Func($p) of Int { return $p; } Func("test"); 

рддреЛ рдЗрд╕ рдорд╛рдорд▓реЗ рдореЗрдВ, рдЖрдЙрдЯрдкреБрдЯ рдорд╛рдиреЛрдВ рдХреА рдЬрд╛рдВрдЪ рдХрд░рдирд╛ рднреА рдЕрдЪреНрдЫрд╛ рд╣реЛрдЧрд╛ред

рдЕрдВрдд рдореЗрдВ, рдореИрдВ рдпрд╣ рдХрд╣рдирд╛ рдЪрд╛рд╣рддрд╛ рд╣реВрдВ рдХрд┐, рдореЗрд░реА рд░рд╛рдп рдореЗрдВ, рд╕рдВрдЧреНрд░рд╣реАрдд рдбреЗрдЯрд╛ рдХреЗ рдкреНрд░рдХрд╛рд░реЛрдВ рдкрд░ рдкреНрд░рддрд┐рдмрдВрдз рдХрд╛рд░реНрдпреЛрдВ рдХреЗ "рдЗрдВрдЯрд░рдлреЗрд╕" рдХрд╛ рд╡рд░реНрдгрди рдХрд░рдиреЗ рдореЗрдВ рдорджрдж рдХрд░ рд╕рдХрддрд╛ рд╣реИ, рдФрд░ рдЯрд╛рдЗрдк рдХрд┐рдП рдЧрдП рдкреНрд░реЛрдЧреНрд░рд╛рдорд┐рдВрдЧ рднрд╛рд╖рд╛рдУрдВ рдХреЗ рдХреБрдЫ рдлрд╛рдпрджреЗ рджреЗ рд╕рдХрддрд╛ рд╣реИред
рдЖрд╢рд╛ рд╣реИ рдХрд┐ рдпрд╣ рдЬрд╛рдирдХрд╛рд░реА рдорджрджрдЧрд╛рд░ рд░рд╣реА рд╣реЛрдЧреАред

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


All Articles