рдореИрд╢, рднрд╛рд╖рд╛ рдХреА рдореВрд▓ рдмрд╛рддреЗрдВ

рдЫрд╡рд┐

рдкреНрд░рд╕реНрддрд╛рд╡рдирд╛


рдпрд╣ рднрд╛рд╖рд╛ рдореЗрд░реЗ рджреНрд╡рд╛рд░рд╛ рд╢реИрдХреНрд╖рд┐рдХ рдЙрджреНрджреЗрд╢реНрдпреЛрдВ рдХреЗ рд▓рд┐рдП рд╡рд┐рдХрд╕рд┐рдд рдХреА рдЧрдИ рдереАред рдореИрдВ рдЗрд╕реЗ (рдлрд┐рд▓рд╣рд╛рд▓) рдкреВрд░реА рддрд░рд╣ рд╕реЗ рд╡рд┐рдХрд╕рд┐рдд рднрд╛рд╖рд╛ рдирд╣реАрдВ рдорд╛рдирддрд╛, рд▓реЗрдХрд┐рди рд╢рд╛рдпрдж рднрд╡рд┐рд╖реНрдп рдореЗрдВ рдпрд╣ рдкреНрд░рддрд┐рдпреЛрдЧрд┐рдпреЛрдВ рдХреЗ рд╕рд╛рде рдкреНрд░рддрд┐рд╕реНрдкрд░реНрдзрд╛ рдХрд░рдиреЗ рдореЗрдВ рд╕рдХреНрд╖рдо рд╣реЛрдЧрд╛ред

рдпрджрд┐ рдЖрдкрдХреЗ рдкрд╛рд╕ рдЦреБрдж рдХреЛ рдПрдХреНрд╢рди рдореЗрдВ рдЖрдЬрд╝рдорд╛рдиреЗ рдХреА рдЗрдЪреНрдЫрд╛ рд╣реИ - рдкреНрд░реЛрдЬреЗрдХреНрдЯ рд░рд┐рдкреЙрдЬрд┐рдЯрд░реА рдбрд╛рдЙрдирд▓реЛрдб рдХрд░реЗрдВ , рддреЛ рдЖрдк рдкреНрд░реЛрдЬреЗрдХреНрдЯ рдХреЗ рдЕрд╕реЗрдВрдмрд▓реНрдб рд╡рд░реНрдЬрди рдХреЛ рдкрд╛ рд╕рдХрддреЗ рд╣реИрдВ рдпрд╛ рдЕрдкрдиреЗ рдУрдПрд╕ рдХреЗ рд▓рд┐рдП рдЦреБрдж рдЗрд╕реЗ рдЕрд╕реЗрдВрдмрд▓ рдХрд░ рд╕рдХрддреЗ рд╣реИрдВред

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

рдЪрд░ рдФрд░ рдкреНрд░рднрд╛рд╡ рд╕реВрдЪрдХ


рдореИрд╢ рдореЗрдВ, рдкреНрд░рддреНрдпреЗрдХ рдЪрд░ рдПрдХ рдкреЙрдЗрдВрдЯрд░ рдХреЛ рдореЗрдореЛрд░реА рдореЗрдВ рдХрд┐рд╕реА рдСрдмреНрдЬреЗрдХреНрдЯ рдореЗрдВ рд╕рдВрдЧреНрд░рд╣реАрдд рдХрд░рддрд╛ рд╣реИред рдЬрдм рдЪрд░ рдХреЛ рд╡рд┐рдзрд┐рдпреЛрдВ рдореЗрдВ рд╕реНрдерд╛рдирд╛рдВрддрд░рд┐рдд рдХрд░рддреЗ рд╣реИрдВ, рддреЛ рдкрд░рд┐рдгрд╛рдо рдкреНрд░рд╛рдкреНрдд рдХрд░рдирд╛, рдпрд╛ рдЙрдирдХреЗ рд╕рд╛рде рд╕рд░рд▓ рдЬреЛрдбрд╝рддреЛрдбрд╝ рдХреЗ рд╕рд╛рде, рдЙрдиреНрд╣реЗрдВ рд╕рдВрдХреЗрдд рджреНрд╡рд╛рд░рд╛ рд╕реНрдореГрддрд┐ рдореЗрдВ рд╡рд╕реНрддреБрдУрдВ рдХреЗ рд╕рд╛рде рдХрд╛рдо рдХрд┐рдпрд╛ рдЬрд╛рддрд╛ рд╣реИред

рдпрд╛рдиреА рдирд┐рдореНрдирд▓рд┐рдЦрд┐рдд рдХреЛрдб рдореЗрдВ, рдПрдХ рд╕рд░рдгреА рдХреЛ рдкрд╣рд▓реЗ рд╕реЗ рдмрдирд╛рдИ рдЧрдИ рдХрд┐рд╕реА рд╡рд╕реНрддреБ рдХреЗ рд▓рд┐рдП рд╕реВрдЪрдХ рдХреЗ рд░реВрдк рдореЗрдВ рдкреА (рдЧрд┐рд░рдлреНрддрд╛рд░) рд╡рд┐рдзрд┐ рд╕реЗ рдкрд╛рд░рд┐рдд рдХрд┐рдпрд╛ рдЬрд╛рдПрдЧрд╛ред

proc p(arr): ... end proc main(): arr ?= [1, 2, 3, 4, 5] p(arr) end 

рднрд╛рд╖рд╛ рдореЗрдВ рд╕рдВрдХреЗрддрдХрд░реНрддрд╛рдУрдВ рдХреА рдЙрдкрд╕реНрдерд┐рддрд┐, рдореЗрд░реА рд░рд╛рдп рдореЗрдВ рд╕реНрдкрд╖реНрдЯ рдФрд░ рдЕрдВрддрд░реНрдирд┐рд╣рд┐рдд рджреЛрдиреЛрдВ рд╣реИ, рдпрд╣ рдЕрддрд┐рд░рд┐рдХреНрдд рд▓рдЪреАрд▓рд╛рдкрди рдФрд░ рдХрд╛рд░реНрдпрдХреНрд╖рдорддрд╛ рджреЗрддрд╛ рд╣реИ, рд╣рд╛рд▓рд╛рдВрдХрд┐ рдХреБрдЫ рдорд╛рдорд▓реЛрдВ рдореЗрдВ рдпрд╣ рддреНрд░реБрдЯрд┐рдпреЛрдВ рдХреА рдкреАрдврд╝реА рдореЗрдВ рдпреЛрдЧрджрд╛рди рджреЗрддрд╛ рд╣реИред

рдЕрд╕реНрдерд╛рдпреА рдЪрд░ рдФрд░ рдХрдЪрд░рд╛ рд╕рдВрдЧреНрд░рд╣рдХрд░реНрддрд╛


рдЗрд╕реА рддрд░рд╣ рдХреА рдкреНрд░реЛрдЧреНрд░рд╛рдорд┐рдВрдЧ рднрд╛рд╖рд╛рдУрдВ рдХреЗ рд╡рд┐рдкрд░реАрдд, рдореИрд╢ рдореЗрдВ рдПрдХ рд╕реЗрдореА-рдСрдЯреЛрдореИрдЯрд┐рдХ рдХрдЪрд░рд╛ рд╕рдВрдЧреНрд░рд╛рд╣рдХ рд╣реЛрддрд╛ рд╣реИ, рдЬреЛ рдЧрд┐рдирддреА рдХреЗ рд╕рдВрдХреЗрдд рдХреЗ рдмрдЬрд╛рдп рдЯрд╛рдЗрдо рд╡реИрд▓реНрдпреВ рд▓реЗрдмрд▓ рдХреЗ рддрдВрддреНрд░ рдкрд░ рдЖрдзрд╛рд░рд┐рдд рд╣реЛрддрд╛ рд╣реИред

рдпрд╛рдиреА рдбреЗрд╡рд▓рдкрд░ рдЦреБрдж рддрдп рдХрд░рддрд╛ рд╣реИ рдХрд┐ рдХрдЪрд░рд╛ рдХрдм рд╕рд╛рдл рдХрд░рдирд╛ рд╣реИ рдФрд░ рдХреБрдЫ рдорд╛рдорд▓реЛрдВ рдХреЗ рд▓рд┐рдП рдореИрдиреНрдпреБрдЕрд▓ рд░реВрдк рд╕реЗ рднреА рдХрд░ рд╕рдХрддрд╛ рд╣реИред

рдХрдЪрд░рд╛ рд╕рдВрдЧреНрд░рд╣ рдЬреАрд╕реА () рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд░рдХреЗ рдХрд╣рд╛ рдЬрд╛рддрд╛ рд╣реИ рдФрд░ рд╕рднреА рдЕрд╕реНрдерд╛рдпреА рд╡рд╕реНрддреБрдУрдВ рдХреЗ рддрд╣рдд рдореЗрдореЛрд░реА рдХреЛ рдореБрдХреНрдд рдХрд░рддрд╛ рд╣реИред

рдЪрд░ рдХреЗ рд╕рд╛рде рдХрдИ рд╕рд░рд▓ рдХреНрд░рд┐рдпрд╛рдПрдВ рд╕реНрдореГрддрд┐ рдореЗрдВ рдЕрд╕реНрдерд╛рдпреА рд╡рд╕реНрддреБрдУрдВ рдХреЗ рдирд┐рд░реНрдорд╛рдг рдХреЗ рд╕рд╛рде рд╣реЛрддреА рд╣реИрдВред

рдбреЗрд╡рд▓рдкрд░ рд╕реНрдкрд╖реНрдЯ рд░реВрдк рд╕реЗ рдЗрд╕рдХреЗ рд╕рд╛рде рдЖрдЧреЗ рдХреЗ рдХрд╛рдо рдХреЗ рд▓рд┐рдП рдореЗрдореЛрд░реА рдЖрд╡рдВрдЯрди рдХреА рдШреЛрд╖рдгрд╛ рдХрд░ рд╕рдХрддрд╛ рд╣реИ, рдЕрд░реНрдерд╛рддреНред рджреАрд░реНрдШрдХрд╛рд▓рд┐рдХ рдЙрдкрдпреЛрдЧ рдХреЗ рд▓рд┐рдП рдЪрд░ рдШреЛрд╖рд┐рдд рдХрд░реЗрдВред

рдПрдХ рдЕрд╕реНрдерд╛рдпреА рдЪрд░ рдмрдирд╛рдиреЗ рдХреЗ рдЙрджрд╛рд╣рд░рдг:

 x ?= 10 

рдФрд░ рдЪрд░ рдХрд▓реЗрдХреНрдЯрд░ рдХреЗ рд▓рд┐рдП рдЪрд┐рд╣реНрдирд┐рдд рдирд╣реАрдВ рд╣реИрдВ:

 x ?= new(10) var x2 = 20 

Gc () рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд░рдиреЗ рдХрд╛ рдПрдХ рдЙрджрд╛рд╣рд░рдг:

 while a > b: doSomething(a, b) gc() end 

рдореЗрдореЛрд░реА рдХреЛ рдореИрдиреНрдпреБрдЕрд▓ рд░реВрдк рд╕реЗ рдореБрдХреНрдд рдХрд┐рдпрд╛ рдЬрд╛ рд╕рдХрддрд╛ рд╣реИ:

 var a = 10, b = 20, c = 30 ... Free(a, b, c) 

рдЪрд░ рджреГрд╢реНрдпрддрд╛ рдХреНрд╖реЗрддреНрд░


рдореИрд╢ рдореЗрдВ рдЪрд░ рдХреЛ рд╕реНрдерд╛рдиреАрдп рдФрд░ рд╡рд┐рд╢реНрд╡ рд╕реНрддрд░ рдкрд░ рдШреЛрд╖рд┐рдд рдХрд┐рдпрд╛ рдЬрд╛ рд╕рдХрддрд╛ рд╣реИред

рдЧреНрд▓реЛрдмрд▓ рд╡реЗрд░рд┐рдПрдмрд▓реНрд╕ рдХреЛ рд╡реЗрд░рд┐рдПрдВрдЯ рд╕реНрдЯреЗрдЯрдореЗрдВрдЯ рдХреЗ рдЬрд░рд┐рдП рддрд░реАрдХреЛрдВ рдХреЗ рдмреАрдЪ рдШреЛрд╖рд┐рдд рдХрд┐рдпрд╛ рдЬрд╛рддрд╛ рд╣реИред рд╕реНрдерд╛рдиреАрдп - рдХрд┐рд╕реА рднреА рддрд░рд╣ рд╕реЗ рдЕрдВрджрд░ рдХреЗ рддрд░реАрдХреЗред

рдбреЗрдЯрд╛ рдкреНрд░рдХрд╛рд░


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

рдХреЛрдб рдЙрджрд╛рд╣рд░рдг:

 x ?= 10 x += 3.14 x *= "3" x /= "2,45" x ?= [1, 2, 3.33, func1(1, 2, 3), "String", ["Enum type", 1, 2, 3], "3,14"] 

рдЖрддреНрдордирд┐рд░реАрдХреНрд╖рдг рдЖрдкрдХреЛ рдЪрд░ рдХреЗ рдкреНрд░рдХрд╛рд░ рдХреЛ рдирд┐рд░реНрдзрд╛рд░рд┐рдд рдХрд░рдиреЗ рдХреА рдЕрдиреБрдорддрд┐ рджреЗрддрд╛ рд╣реИ:

 if typeof(x) == TypeInt: ... end 

Arrays рдФрд░ Enums


рджреБрд░реНрд▓рдн рдХрд╛рд░реНрдп рдбреЗрд╡рд▓рдкрд░ рдХреЛ рдХреЛрдб рдореЗрдВ рдЕрдЧрд▓реЗ рд╕рд░рдгреА рдХреЛ рдШреЛрд╖рд┐рдд рдХрд░рдиреЗ рдХреЗ рд▓рд┐рдП рдордЬрдмреВрд░ рдирд╣реАрдВ рдХрд░рддреЗ рд╣реИрдВред
рдореИрд╢ рд╕рд░рдгрд┐рдпреЛрдВ рдХрд╛ рд╕рдорд░реНрдерди рдХрд░рддрд╛ рд╣реИ рдЬрд┐рд╕рдореЗрдВ рдПрдХ рдордирдорд╛рдиреА рд╕рдВрдЦреНрдпрд╛ рд╣реЛрддреА рд╣реИ, + рд╕рд░рдгрд┐рдпрд╛рдБ рдкреЗрдбрд╝реЛрдВ рдХреА рддрд░рд╣ рдХреБрдЫ рд╣реЛ рд╕рдХрддреА рд╣реИрдВ, рдЕрд░реНрдерд╛рддреНред sublevels рдХреЗ рдЖрдХрд╛рд░ рдПрдХ sublevel рдкрд░ рднрд┐рдиреНрди рд╣реЛ рд╕рдХрддреЗ рд╣реИрдВред

рд╕рд░рдгрд┐рдпреЛрдВ рдФрд░ рдЧрдгрдирд╛ рдХреА рдШреЛрд╖рдгрд╛рдУрдВ рдХреЗ рдЙрджрд╛рд╣рд░рдг:

 a ?= new[10][20] var b = new[10][20] c ?= [1, [], 3, 3.14, "Test", [1, 2, 3, 4, 5], 7.7, a, b, ["77", func1()]] var d = [1, 2, 3] 

рдирдП рдСрдкрд░реЗрдЯрд░ рдХреЗ рдорд╛рдзреНрдпрдо рд╕реЗ рдШреЛрд╖рд┐рдд рдХреЛрдИ рднреА рд╡рд╕реНрддреБ рдХрдЪрд░рд╛ рдХрд▓реЗрдХреНрдЯрд░ рдХреЗ рд▓рд┐рдП рдЪрд┐рд╣реНрдирд┐рдд рдирд╣реАрдВ рд╣реИред

Arrays, рд╕реНрдореГрддрд┐ рдореЗрдВ рдирд┐рдпрдорд┐рдд рд╡рд╕реНрддреБрдУрдВ рдХреА рддрд░рд╣, рдореБрдлреНрдд () рдХреЙрд▓ рдХрд░рдХреЗ рдореБрдХреНрдд рд╣реЛ рдЬрд╛рддреЗ рд╣реИрдВ
рд╕реНрдерд╛рдирд╛рдиреНрддрд░рдг рдХреЗ рд╕рд╛рде рдРрд╕рд╛ рдХрд╛рдо рдХрд╛рдлреА рд╕реБрд╡рд┐рдзрд╛рдЬрдирдХ рд╣реИред

рдЙрджрд╛рд╣рд░рдг рдХреЗ рд▓рд┐рдП, рдЖрдк рд╡рд┐рдзрд┐рдпреЛрдВ рдХреЛ рдкрд╛рд╕ рдХрд░ рд╕рдХрддреЗ рд╣реИрдВ рдпрд╛ рдЙрдирдореЗрдВ рд╕реЗ рдПрдХ рдЪрд░ рдХреЗ рдХрдИ рдорд╛рди рд▓реМрдЯрд╛ рд╕рдХрддреЗ рд╣реИрдВ:
 func doSomething(a, b, c): return [a+c, b+c] end 

рдЕрд╕рд╛рдЗрдирдореЗрдВрдЯ рдСрдкрд░реЗрдЯрд░реНрд╕


рдореИрд╢ рдореЗрдВ 3 рдЕрд╕рд╛рдЗрдирдореЗрдВрдЯ рдСрдкрд░реЗрдЯрд░ рдХреЗ рд░реВрдк рдореЗрдВ рдХрдИ рд╣реИрдВред

  • ? =
    рдХрд┐рд╕реА рдСрдмреНрдЬреЗрдХреНрдЯ рдХреЗ рд▓рд┐рдП рдПрдХ рдкреЙрдЗрдВрдЯрд░ рдХреЗ рд▓рд┐рдП рдПрдХ рд╡реИрд░рд┐рдПрдмрд▓ рдЕрд╕рд╛рдЗрди рдХрд░рддрд╛ рд╣реИ (рдпрджрд┐ рдПрдХ рд╡реИрд░рд┐рдПрдмрд▓ рдШреЛрд╖рд┐рдд рдХрд┐рдпрд╛ рдЧрдпрд╛ рд╣реИ, рд▓реЗрдХрд┐рди рдПрдХ рдкреЙрдЗрдВрдЯрд░ рдХреЛ рдореЗрдореЛрд░реА рдореЗрдВ рдСрдмреНрдЬреЗрдХреНрдЯ рдореЗрдВ рд╕реНрдЯреЛрд░ рдирд╣реАрдВ рдХрд░рддрд╛ рд╣реИ, рддреЛ рдЗрд╕ рдСрдкрд░реЗрдЯрд░ рдХреЛ рдЗрд╕рдХрд╛ рдорд╛рди рдЕрд╕рд╛рдЗрди рдХрд░рдиреЗ рдХреЗ рд▓рд┐рдП рдЙрдкрдпреЛрдЧ рдХрд┐рдпрд╛ рдЬрд╛рдирд╛ рдЪрд╛рд╣рд┐рдП)ред
  • =
    рд╕рд╛рдорд╛рдиреНрдп рдЕрд╕рд╛рдЗрдирдореЗрдВрдЯред рдПрдХ рдЪрд░ рдореЗрдВ рдПрдХ рд╡рд╕реНрддреБ рдХреЛ рдХрд┐рд╕реА рдЕрдиреНрдп рд╡рд╕реНрддреБ рдХреЗ рдореВрд▓реНрдп рдореЗрдВ рд╕реВрдЪрдХ рджреНрд╡рд╛рд░рд╛ рдирд┐рд░реНрджрд┐рд╖реНрдЯ рдХрд░рддрд╛ рд╣реИред
  • @ =
    рдЗрд╕ рдСрдмреНрдЬреЗрдХреНрдЯ рдХреЗ рд▓рд┐рдП рдПрдХ рд╕реНрдкрд╖реНрдЯ рдкреЙрдЗрдВрдЯрд░ рджреНрд╡рд╛рд░рд╛ рдХрд┐рд╕реА рдСрдмреНрдЬреЗрдХреНрдЯ рдХрд╛ рдорд╛рди рдЕрд╕рд╛рдЗрди рдХрд┐рдпрд╛ рдЧрдпрд╛ рд╣реИ (рдпрд╣ рдмрд╛рдж рдореЗрдВ рдЪрд░реНрдЪрд╛ рдХреА рдЬрд╛рдПрдЧреА)ред

рдЧрдгрд┐рддреАрдп рдФрд░ рддрд╛рд░реНрдХрд┐рдХ рд╕рдВрдЪрд╛рд▓рди


рд╡рд░реНрддрдорд╛рди рдореЗрдВ рд╕рдорд░реНрдерд┐рдд рдЧрдгрд┐рддреАрдп рдФрд░ рддрд╛рд░реНрдХрд┐рдХ рдХрд╛рд░реНрдпреЛрдВ рдХреА рд╕реВрдЪреА:

  • + , - , * , /
    рдХреЛрдИ рдЯрд┐рдкреНрдкрдгреА рдХреА рдЬрд░реВрд░рдд рд╣реИред
  • \
    рдкреВрд░реА рддрд░рд╣ рд╕реЗ рд╡рд┐рднрд╛рдЬрдиред
  • %
    рд╡рд┐рднрд╛рдЬрди рдХреЗ рд╢реЗрд╖ред
  • рдФрд░
    рддрд╛рд░реНрдХрд┐рдХ "рдФрд░ред"
  • |
    рддрд╛рд░реНрдХрд┐рдХ "рдпрд╛"ред
  • ^
    рддрд╛рд░реНрдХрд┐рдХ "рдЕрдирдиреНрдп рдпрд╛ред"
  • ~
    рддрд╛рд░реНрдХрд┐рдХ "рдирд╣реАрдВред"
  • ++ , -
    рд╡реЗрддрди рд╡реГрджреНрдзрд┐ рдФрд░ рдЧрд┐рд░рд╛рд╡рдЯред
  • << >>
    рдмрд┐рдЯрд╡рд╛рдЗрдЬрд╝ рдмрд╛рдПрдБ рдФрд░ рджрд╛рдПрдБ рд╢рд┐рдлрд╝реНрдЯред
  • == , <> , > = , <=
    рддрд╛рд░реНрдХрд┐рдХ рддреБрд▓рдирд╛ рд╕рдВрдЪрд╛рд▓рдХред
  • рдореЗрдВ
    рдЬрд╛рдБрдЪрддрд╛ рд╣реИ рдХрд┐ рдХреЛрдИ рд╡рд╕реНрддреБ рдХрд┐рд╕реА рд╕рдВрд╕реЗрдЪрди рд╕реЗ рд╕рдВрдмрдВрдзрд┐рдд рд╣реИ рдпрд╛ рдХрд┐рд╕реА рд╕рд░рдгреА рдореЗрдВред
    рдПрдХ рдЙрджрд╛рд╣рд░рдг:
     if Flag in [1, 3, 5, 8]: ... 

рд╕реНрдкрд╖реНрдЯ рд╕рдВрдХреЗрдд


рдРрд╕рд╛ рд▓рдЧрддрд╛ рд╣реИ, рдЕрдЧрд░ рдХреЛрдИ рд╕реНрдкрд╖реНрдЯ рд╕рдВрдХреЗрдд рдирд╣реАрдВ рд╣реИрдВ рддреЛ рдЙрдирдХреА рдЖрд╡рд╢реНрдпрдХрддрд╛ рдХреНрдпреЛрдВ рд╣реИ? рдЙрджрд╛рд╣рд░рдг рдХреЗ рд▓рд┐рдП, рдпрд╣ рдЬрд╛рдБрдЪрдиреЗ рдХреЗ рд▓рд┐рдП рдХрд┐ рдХреНрдпрд╛ рдП рдФрд░ рдмреА рд╕реНрдЯреЛрд░реЗрдЬ рдХреЛ рдПрдХ рд╣реА рдСрдмреНрдЬреЗрдХреНрдЯ рдореЗрдВ рдореЗрдореЛрд░реА рдореЗрдВ рд░рдЦрддреЗ рд╣реИрдВред

  • @ - рдПрдХ рдСрдмреНрдЬреЗрдХреНрдЯ рдХреЛ рдПрдХ рдкреЙрдЗрдВрдЯрд░ рдорд┐рд▓рддрд╛ рд╣реИ рдФрд░ рдЗрд╕реЗ рдПрдХ рдСрдмреНрдЬреЗрдХреНрдЯ рдХреА рддрд░рд╣ рд╡реЗрд░рд┐рдПрдмрд▓ рдореЗрдВ рд░рдЦрд╛ рдЬрд╛рддрд╛ рд╣реИред
  • ? - рдЪрд░ рдореЗрдВ рдСрдмреНрдЬреЗрдХреНрдЯ рд╕реЗ рдкреЙрдЗрдВрдЯрд░ рджреНрд╡рд╛рд░рд╛ рдСрдмреНрдЬреЗрдХреНрдЯ рдкреНрд░рд╛рдкреНрдд рдХрд░реЗрдВред
    рдПрдХ рдЙрджрд╛рд╣рд░рдг:
     a ?= ?b 

рдХрд╛рд░реНрдпрд╡рд┐рдзрд┐рдпрд╛рдБ рдФрд░ рдХрд╛рд░реНрдп


рдореИрдВрдиреЗ рдкреНрд░рдХреНрд░рд┐рдпрд╛рдУрдВ рдФрд░ рдХрд╛рд░реНрдпреЛрдВ рдореЗрдВ рдореВрд▓реНрдпреЛрдВ рдХреЛ рд╡рд╛рдкрд╕ рдХрд░рдиреЗ рдХреЗ рд▓рд┐рдП рддрд░реАрдХреЛрдВ рдХреЛ рдЕрд▓рдЧ рдХрд░рдиреЗ рдХрд╛ рдлреИрд╕рд▓рд╛ рдХрд┐рдпрд╛ (рдЬреИрд╕рд╛ рдХрд┐ рдкрд╛рд╕реНрдХрд▓ рдореЗрдВ рд╣реИ)ред

рд╡рд┐рдзрд┐ рдШреЛрд╖рдгрд╛рдПрдВ рдирд┐рдореНрдирд▓рд┐рдЦрд┐рдд рдЙрджрд╛рд╣рд░рдгреЛрдВ рдХреА рддрд░рд╣ рдХреА рдЬрд╛рддреА рд╣реИрдВ:

 proc SayHello(arg1, arg2, argN): println("Hello, ", arg1, arg2, argN) end func SummIt(a, b): return a + b end 

рднрд╛рд╖рд╛ рдирд┐рд░реНрдорд╛рдг


рдПрдХ рдЙрджрд╛рд╣рд░рдг if..else..end рдирд┐рд░реНрдорд╛рдгред

 if <>: ... else: ... end 

рдкрд╛рд╢ рдХреЗ рд▓рд┐рдПред

 for([]; <>; [  ]): ... end 

рд╣реИред рдкреБрдирд░рд╛рд╡реГрддреНрддрд┐ рд╕реЗ рдкрд╣рд▓реЗ рд╕реНрдерд┐рддрд┐ рдХреА рдЬрд╛рдВрдЪ рдХреА рдЬрд╛рддреА рд╣реИред

 whilst <>: ... end 

рдЬрдмрдХрд┐ред рдПрдХ рд▓реВрдк рдЬреЛ рдЙрд╕ рд╕рдордп рд╕реЗ рднрд┐рдиреНрди рд╣реЛрддрд╛ рд╣реИ рдЬрдм рдкреБрдирд░рд╛рд╡реГрддреНрддрд┐ рдХреЗ рдмрд╛рдж рд╕реНрдерд┐рддрд┐ рдХреА рдЬрд╛рдВрдЪ рдХреА рдЬрд╛рддреА рд╣реИред

 until <>: ... end 

switch..case..end..else..end ... рддрд╛рд░реНрдХрд┐рдХ рд╢рд╛рдЦрд╛рдПрдБ рдмрдирд╛рдиреЗ рдХреЗ рд▓рд┐рдП рдПрдХ рдкрд░рд┐рдЪрд┐рдд рдирд┐рд░реНрдорд╛рдг рд╣реИред

 switch <>: case < 1>: ... end case < 2>: ... end else: ... end 

рдУрдУрдкреА рднрд╛рд╖рд╛ рдХреЗ рд╡рд░реНрдЧ рдФрд░ рддрддреНрд╡


рдореИрд╢ рдХрдХреНрд╖рд╛рдУрдВ, рд╡рд┐рд░рд╛рд╕рдд, рдЧрддрд┐рд╢реАрд▓ рдЖрддреНрдордирд┐рд░реАрдХреНрд╖рдг рдФрд░ рдкреНрд░рддрд┐рдмрд┐рдВрдм, рдмрд╣реБрд░реВрдкрддрд╛ рдХреЗ рд▓рд┐рдП рд╕рдорд░реНрдерди рдХрд╛ рд╕рдорд░реНрдерди рдХрд░рддрд╛ рд╣реИред рдпрд╛рдиреА рд╕реНрдХреНрд░рд┐рдкреНрдЯрд┐рдВрдЧ рднрд╛рд╖рд╛рдУрдВ рдХрд╛ рдПрдХ рдорд╛рдирдХ рд╕реЗрдЯ рд╕рдорд░реНрдерд┐рдд рд╣реИред

рдПрдХ рд╕рд╛рдзрд╛рд░рдг рд╡рд░реНрдЧ рдШреЛрд╖рдгрд╛ рдкрд░ рд╡рд┐рдЪрд╛рд░ рдХрд░реЗрдВ:

 class MyClass: var a, b proc Create, Free func SomeFunction end 

рдПрдХ рд╡рд░реНрдЧ рдШреЛрд╖рдгрд╛ рдореЗрдВ рдЙрди рд╡рд┐рдзрд┐рдпреЛрдВ рдХрд╛ рдХрд╛рд░реНрдпрд╛рдиреНрд╡рдпрди рд╢рд╛рдорд┐рд▓ рдирд╣реАрдВ рд╣реИ рдЬреЛ рдЗрд╕рдореЗрдВ рдШреЛрд╖рд┐рдд рдХреА рдЧрдИ рд╣реИрдВред
рд╡рд░реНрдЧ рдХрд╛ рдирд┐рд░реНрдорд╛рддрд╛ рдмрдирд╛рдПрдБ рд╡рд┐рдзрд┐ рд╣реИред рдПрдХ рд╡рд┐рдзреНрд╡рдВрд╕рдХ рдХреЗ рд░реВрдк рдореЗрдВ - рдирд┐: рд╢реБрд▓реНрдХред

рдХрдХреНрд╖рд╛ рдШреЛрд╖рд┐рдд рд╣реЛрдиреЗ рдХреЗ рдмрд╛рдж, рдЖрдк рдЗрд╕рдХреЗ рддрд░реАрдХреЛрдВ рдХреЗ рдХрд╛рд░реНрдпрд╛рдиреНрд╡рдпрди рдХрд╛ рд╡рд░реНрдгрди рдХрд░ рд╕рдХрддреЗ рд╣реИрдВ:

 proc MyClass::Create(a, b): $a ?= new(a) $b ?= new(b) end proc MyClass::Free(): Free($a, $b, $) end func MyClass::SomeFunction(x): return ($a + $b) / x end 

рдЖрдк рдХреЛрдб рдореЗрдВ рдХреБрдЫ рд╕реНрдерд╛рдиреЛрдВ рдореЗрдВ $ рдкреНрд░рддреАрдХ рдХреЛ рджреЗрдЦ рд╕рдХрддреЗ рд╣реИрдВ - рдЗрд╕ рдкреНрд░рддреАрдХ рдХреЗ рд╕рд╛рде рдореИрдВрдиреЗ рдмрд╕ рд▓рдВрдмреЗ рд╕рдордп рддрдХ рдЗрд╕реЗ рдЫреЛрдЯрд╛ рдХрд░ рджрд┐рдпрд╛->ред рдпрд╛рдиреА рдХреЛрдб:

 return ($a + $b) / x ... Free($a, $b, $) 

рдЗрд╕ рдХреЛрдб рдХреЗ рдмрд░рд╛рдмрд░:
 return (this->a + this->b) / x ... Free(this->a, this->b, this) 

рдЗрд╕рдореЗрдВ рдХрдХреНрд╖рд╛ рдХреЗ рдПрдХ рдЙрджрд╛рд╣рд░рдг рдХреЗ рд▓рд┐рдП рдПрдХ рд╕рдВрдХреЗрддрдХ рд╣реЛрддрд╛ рд╣реИ, рдЬрд┐рд╕рдХреА рдУрд░ рд╕реЗ рдЗрд╕ рд╡рд░реНрдЧ рдХреА рд╡рд┐рдзрд┐ рдХреЛ рдХрд╣рд╛ рдЬрд╛рддрд╛ рд╣реИред

рдХрд┐рд╕реА рд╡рд░реНрдЧ рдХреА рдХрд╛рд░реНрдпрдХреНрд╖рдорддрд╛ рдХреЛ рдкреНрд░рд╛рдкреНрдд рдХрд░рдиреЗ рдХреЗ рд▓рд┐рдП, рдЖрдкрдХреЛ рдЗрд╕ рддрд░рд╣ рд╕реЗ рдПрдХ рдирдП рд╡рд░реНрдЧ рдХреА рдШреЛрд╖рдгрд╛ рдХрд╛ рд╡рд░реНрдгрди рдХрд░рдиреЗ рдХреА рдЖрд╡рд╢реНрдпрдХрддрд╛ рд╣реИ:

 class MySecondClass(MyClass): func SomeFunction end func MySecondClass::SomeFunction(x): return ($a - $b) / x end 

MySecondClass - рдХреЗ рдкреВрд░реНрд╡рдЬ + SomeFunction рдлрд╝рдВрдХреНрд╢рди рд╕реЗ рдПрдХ рдХрдВрд╕реНрдЯреНрд░рдХреНрдЯрд░ рдФрд░ рд╡рд┐рдзреНрд╡рдВрд╕рдХ рд╣реЛрдЧрд╛, рдЬреЛ рдХрд┐ рдкреВрд░реНрд╡рдЬ рд╡рд░реНрдЧ рдХреЗ рдкрд╛рд╕ рд╣реИ, рдПрдХ рдирдП рд╡рд░реНрдЧ рд╕реЗ рдПрдХ рдлрд╝рдВрдХреНрд╢рди рджреНрд╡рд╛рд░рд╛ рдЕрдзрд┐рд▓реЗрдЦрд┐рдд рд╣реИред

рдХреНрд▓рд╛рд╕ рдЗрдВрд╕реНрдЯреЗрдВрд╕реЗрд╕ рдмрдирд╛рдиреЗ рдХреЗ рд▓рд┐рдП, рдирдпрд╛ рдСрдкрд░реЗрдЯрд░ рдореМрдЬреВрдж рд╣реИред

рдХреЛрдб рдЙрджрд╛рд╣рд░рдг:

 a ?= new MyClass //     

 b ?= new MyClass(10, 20) //         

рдЗрд╕ рдЙрджрд╛рд╣рд░рдг рдХреЛ рдмрдирд╛рддреЗ рд╕рдордп рдХрд┐рд╕реА рд╡рд░реНрдЧ рдХреЗ рдЙрджрд╛рд╣рд░рдг рдХрд╛ рдкреНрд░рдХрд╛рд░ рдирд┐рд░реНрдзрд╛рд░рд┐рдд рдХрд┐рдпрд╛ рдЬрд╛ рд╕рдХрддрд╛ рд╣реИ; рддрджрдиреБрд╕рд╛рд░, рднрд╛рд╖рд╛ рдореЗрдВ рдЯрд╛рдЗрдк рд░реВрдкрд╛рдВрддрд░рдг рдЕрдиреБрдкрд╕реНрдерд┐рдд рд╣реИред

рдЖрддреНрдордирд┐рд░реАрдХреНрд╖рдг рдЖрдкрдХреЛ рд╡рд░реНрдЧ рдЙрджрд╛рд╣рд░рдг, рдХреЛрдб рдЙрджрд╛рд╣рд░рдг рдХреЗ рдкреНрд░рдХрд╛рд░ рдХреЛ рдирд┐рд░реНрдзрд╛рд░рд┐рдд рдХрд░рдиреЗ рдХреА рдЕрдиреБрдорддрд┐ рджреЗрддрд╛ рд╣реИ:

 x ?= new MyClass(10, 20) ... if x->type == MyClass: // -... end 

рдХрднреА-рдХрднреА рдЖрдкрдХреЛ рдПрдХ рдХреНрд▓рд╛рд╕ рдлрд╝рдВрдХреНрд╢рди рдХреЛ рдЪрд╛рд▓реВ рдХрд░рдиреЗ рдФрд░ рдЗрд╕реЗ рдПрдХ рдирдП рдХреЗ рд╕рд╛рде рдЕрдзрд┐рд▓реЗрдЦрд┐рдд рдХрд░рдиреЗ рдХреА рдЖрд╡рд╢реНрдпрдХрддрд╛ рд╣реЛрддреА рд╣реИред рдХреЛрдб рдЙрджрд╛рд╣рд░рдг:

 func class::NewSomeFunction(x): return $x * $y * x end ... x ?= new MyClass(10, 20) x->SomeFunction ?= class::NewSomeFunction x->SomeFunction(33) // NewSomeFunction,     . 

рдирд┐рд╖реНрдХрд░реНрд╖


рдЗрд╕ рд▓реЗрдЦ рдореЗрдВ, рдореИрдВрдиреЗ рдЕрдкрдиреА рд░рдЪрдирд╛ рдХреЗ рд▓рд┐рдП рд╕рдВрднрд╛рд╡рд┐рдд рдЗрдЪреНрдЫреБрдХ рд▓реЛрдЧреЛрдВ рд╕реЗ рдкрд░рд┐рдЪрдп рдХрд░рд╛рдиреЗ рдХреА рдХреЛрд╢рд┐рд╢ рдХреАред

рдкрдврд╝рдиреЗ рдХреЗ рд▓рд┐рдП рдзрдиреНрдпрд╡рд╛рджред рдЯрд┐рдкреНрдкрдгрд┐рдпреЛрдВ рдХреА рдкреНрд░рддреАрдХреНрд╖рд╛ рд╣реИред

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


All Articles