
рдкреНрд░рд╕реНрддрд╛рд╡рдирд╛
рдпрд╣ рднрд╛рд╖рд╛ рдореЗрд░реЗ рджреНрд╡рд╛рд░рд╛ рд╢реИрдХреНрд╖рд┐рдХ рдЙрджреНрджреЗрд╢реНрдпреЛрдВ рдХреЗ рд▓рд┐рдП рд╡рд┐рдХрд╕рд┐рдд рдХреА рдЧрдИ рдереАред рдореИрдВ рдЗрд╕реЗ (рдлрд┐рд▓рд╣рд╛рд▓) рдкреВрд░реА рддрд░рд╣ рд╕реЗ рд╡рд┐рдХрд╕рд┐рдд рднрд╛рд╖рд╛ рдирд╣реАрдВ рдорд╛рдирддрд╛, рд▓реЗрдХрд┐рди рд╢рд╛рдпрдж рднрд╡рд┐рд╖реНрдп рдореЗрдВ рдпрд╣ рдкреНрд░рддрд┐рдпреЛрдЧрд┐рдпреЛрдВ рдХреЗ рд╕рд╛рде рдкреНрд░рддрд┐рд╕реНрдкрд░реНрдзрд╛ рдХрд░рдиреЗ рдореЗрдВ рд╕рдХреНрд╖рдо рд╣реЛрдЧрд╛ред
рдпрджрд┐ рдЖрдкрдХреЗ рдкрд╛рд╕ рдЦреБрдж рдХреЛ рдПрдХреНрд╢рди рдореЗрдВ рдЖрдЬрд╝рдорд╛рдиреЗ рдХреА рдЗрдЪреНрдЫрд╛ рд╣реИ - рдкреНрд░реЛрдЬреЗрдХреНрдЯ
рд░рд┐рдкреЙрдЬрд┐рдЯрд░реА рдбрд╛рдЙрдирд▓реЛрдб
рдХрд░реЗрдВ , рддреЛ рдЖрдк рдкреНрд░реЛрдЬреЗрдХреНрдЯ рдХреЗ рдЕрд╕реЗрдВрдмрд▓реНрдб рд╡рд░реНрдЬрди рдХреЛ рдкрд╛ рд╕рдХрддреЗ рд╣реИрдВ рдпрд╛ рдЕрдкрдиреЗ рдУрдПрд╕ рдХреЗ рд▓рд┐рдП рдЦреБрдж рдЗрд╕реЗ рдЕрд╕реЗрдВрдмрд▓ рдХрд░ рд╕рдХрддреЗ рд╣реИрдВред
рдпрд╣ рд▓реЗрдЦ рдПрдХ рдЫреЛрдЯреЗ рдкреНрд░реЛрдЬреЗрдХреНрдЯ рдореИрдиреБрдЕрд▓ рдХрд╛ рд╡рд░реНрдгрди рдХрд░реЗрдЧрд╛ рдФрд░ рднрд╛рд╖рд╛ рдХреЗ рд╡рд╛рдХреНрдп рд╡рд┐рдиреНрдпрд╛рд╕ рдкрд░ рд╡рд┐рдЪрд╛рд░ рдХрд░реЗрдЧрд╛ред
рдЪрд░ рдФрд░ рдкреНрд░рднрд╛рд╡ рд╕реВрдЪрдХ
рдореИрд╢ рдореЗрдВ, рдкреНрд░рддреНрдпреЗрдХ рдЪрд░ рдПрдХ рдкреЙрдЗрдВрдЯрд░ рдХреЛ рдореЗрдореЛрд░реА рдореЗрдВ рдХрд┐рд╕реА рдСрдмреНрдЬреЗрдХреНрдЯ рдореЗрдВ рд╕рдВрдЧреНрд░рд╣реАрдд рдХрд░рддрд╛ рд╣реИред рдЬрдм рдЪрд░ рдХреЛ рд╡рд┐рдзрд┐рдпреЛрдВ рдореЗрдВ рд╕реНрдерд╛рдирд╛рдВрддрд░рд┐рдд рдХрд░рддреЗ рд╣реИрдВ, рддреЛ рдкрд░рд┐рдгрд╛рдо рдкреНрд░рд╛рдкреНрдд рдХрд░рдирд╛, рдпрд╛ рдЙрдирдХреЗ рд╕рд╛рде рд╕рд░рд▓ рдЬреЛрдбрд╝рддреЛрдбрд╝ рдХреЗ рд╕рд╛рде, рдЙрдиреНрд╣реЗрдВ рд╕рдВрдХреЗрдд рджреНрд╡рд╛рд░рд╛ рд╕реНрдореГрддрд┐ рдореЗрдВ рд╡рд╕реНрддреБрдУрдВ рдХреЗ рд╕рд╛рде рдХрд╛рдо рдХрд┐рдпрд╛ рдЬрд╛рддрд╛ рд╣реИред
рдпрд╛рдиреА рдирд┐рдореНрдирд▓рд┐рдЦрд┐рдд рдХреЛрдб рдореЗрдВ, рдПрдХ рд╕рд░рдгреА рдХреЛ рдкрд╣рд▓реЗ рд╕реЗ рдмрдирд╛рдИ рдЧрдИ рдХрд┐рд╕реА рд╡рд╕реНрддреБ рдХреЗ рд▓рд┐рдП рд╕реВрдЪрдХ рдХреЗ рд░реВрдк рдореЗрдВ рдкреА (рдЧрд┐рд░рдлреНрддрд╛рд░) рд╡рд┐рдзрд┐ рд╕реЗ рдкрд╛рд░рд┐рдд рдХрд┐рдпрд╛ рдЬрд╛рдПрдЧрд╛ред
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 рдЕрд╕рд╛рдЗрдирдореЗрдВрдЯ рдСрдкрд░реЗрдЯрд░ рдХреЗ рд░реВрдк рдореЗрдВ рдХрдИ рд╣реИрдВред
- ? =
рдХрд┐рд╕реА рдСрдмреНрдЬреЗрдХреНрдЯ рдХреЗ рд▓рд┐рдП рдПрдХ рдкреЙрдЗрдВрдЯрд░ рдХреЗ рд▓рд┐рдП рдПрдХ рд╡реИрд░рд┐рдПрдмрд▓ рдЕрд╕рд╛рдЗрди рдХрд░рддрд╛ рд╣реИ (рдпрджрд┐ рдПрдХ рд╡реИрд░рд┐рдПрдмрд▓ рдШреЛрд╖рд┐рдд рдХрд┐рдпрд╛ рдЧрдпрд╛ рд╣реИ, рд▓реЗрдХрд┐рди рдПрдХ рдкреЙрдЗрдВрдЯрд░ рдХреЛ рдореЗрдореЛрд░реА рдореЗрдВ рдСрдмреНрдЬреЗрдХреНрдЯ рдореЗрдВ рд╕реНрдЯреЛрд░ рдирд╣реАрдВ рдХрд░рддрд╛ рд╣реИ, рддреЛ рдЗрд╕ рдСрдкрд░реЗрдЯрд░ рдХреЛ рдЗрд╕рдХрд╛ рдорд╛рди рдЕрд╕рд╛рдЗрди рдХрд░рдиреЗ рдХреЗ рд▓рд┐рдП рдЙрдкрдпреЛрдЧ рдХрд┐рдпрд╛ рдЬрд╛рдирд╛ рдЪрд╛рд╣рд┐рдП)ред - =
рд╕рд╛рдорд╛рдиреНрдп рдЕрд╕рд╛рдЗрдирдореЗрдВрдЯред рдПрдХ рдЪрд░ рдореЗрдВ рдПрдХ рд╡рд╕реНрддреБ рдХреЛ рдХрд┐рд╕реА рдЕрдиреНрдп рд╡рд╕реНрддреБ рдХреЗ рдореВрд▓реНрдп рдореЗрдВ рд╕реВрдЪрдХ рджреНрд╡рд╛рд░рд╛ рдирд┐рд░реНрджрд┐рд╖реНрдЯ рдХрд░рддрд╛ рд╣реИред - @ =
рдЗрд╕ рдСрдмреНрдЬреЗрдХреНрдЯ рдХреЗ рд▓рд┐рдП рдПрдХ рд╕реНрдкрд╖реНрдЯ рдкреЙрдЗрдВрдЯрд░ рджреНрд╡рд╛рд░рд╛ рдХрд┐рд╕реА рдСрдмреНрдЬреЗрдХреНрдЯ рдХрд╛ рдорд╛рди рдЕрд╕рд╛рдЗрди рдХрд┐рдпрд╛ рдЧрдпрд╛ рд╣реИ (рдпрд╣ рдмрд╛рдж рдореЗрдВ рдЪрд░реНрдЪрд╛ рдХреА рдЬрд╛рдПрдЧреА)ред
рдЧрдгрд┐рддреАрдп рдФрд░ рддрд╛рд░реНрдХрд┐рдХ рд╕рдВрдЪрд╛рд▓рди
рд╡рд░реНрддрдорд╛рди рдореЗрдВ рд╕рдорд░реНрдерд┐рдд рдЧрдгрд┐рддреАрдп рдФрд░ рддрд╛рд░реНрдХрд┐рдХ рдХрд╛рд░реНрдпреЛрдВ рдХреА рд╕реВрдЪреА:
рд╕реНрдкрд╖реНрдЯ рд╕рдВрдХреЗрдд
рдРрд╕рд╛ рд▓рдЧрддрд╛ рд╣реИ, рдЕрдЧрд░ рдХреЛрдИ рд╕реНрдкрд╖реНрдЯ рд╕рдВрдХреЗрдд рдирд╣реАрдВ рд╣реИрдВ рддреЛ рдЙрдирдХреА рдЖрд╡рд╢реНрдпрдХрддрд╛ рдХреНрдпреЛрдВ рд╣реИ? рдЙрджрд╛рд╣рд░рдг рдХреЗ рд▓рд┐рдП, рдпрд╣ рдЬрд╛рдБрдЪрдиреЗ рдХреЗ рд▓рд┐рдП рдХрд┐ рдХреНрдпрд╛ рдП рдФрд░ рдмреА рд╕реНрдЯреЛрд░реЗрдЬ рдХреЛ рдПрдХ рд╣реА рдСрдмреНрдЬреЗрдХреНрдЯ рдореЗрдВ рдореЗрдореЛрд░реА рдореЗрдВ рд░рдЦрддреЗ рд╣реИрдВред
- @ - рдПрдХ рдСрдмреНрдЬреЗрдХреНрдЯ рдХреЛ рдПрдХ рдкреЙрдЗрдВрдЯрд░ рдорд┐рд▓рддрд╛ рд╣реИ рдФрд░ рдЗрд╕реЗ рдПрдХ рдСрдмреНрдЬреЗрдХреНрдЯ рдХреА рддрд░рд╣ рд╡реЗрд░рд┐рдПрдмрд▓ рдореЗрдВ рд░рдЦрд╛ рдЬрд╛рддрд╛ рд╣реИред
- ? - рдЪрд░ рдореЗрдВ рдСрдмреНрдЬреЗрдХреНрдЯ рд╕реЗ рдкреЙрдЗрдВрдЯрд░ рджреНрд╡рд╛рд░рд╛ рдСрдмреНрдЬреЗрдХреНрдЯ рдкреНрд░рд╛рдкреНрдд рдХрд░реЗрдВред
рдПрдХ рдЙрджрд╛рд╣рд░рдг: 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, .
рдирд┐рд╖реНрдХрд░реНрд╖
рдЗрд╕ рд▓реЗрдЦ рдореЗрдВ, рдореИрдВрдиреЗ рдЕрдкрдиреА рд░рдЪрдирд╛ рдХреЗ рд▓рд┐рдП рд╕рдВрднрд╛рд╡рд┐рдд рдЗрдЪреНрдЫреБрдХ рд▓реЛрдЧреЛрдВ рд╕реЗ рдкрд░рд┐рдЪрдп рдХрд░рд╛рдиреЗ рдХреА рдХреЛрд╢рд┐рд╢ рдХреАред
рдкрдврд╝рдиреЗ рдХреЗ рд▓рд┐рдП рдзрдиреНрдпрд╡рд╛рджред рдЯрд┐рдкреНрдкрдгрд┐рдпреЛрдВ рдХреА рдкреНрд░рддреАрдХреНрд╖рд╛ рд╣реИред