
āύāϤā§āύ āĻŦāĻāϰ ⧍ā§Ļ⧍ā§Ļ-āĻāϰ āĻļā§āĻā§āĻā§āĻāĻžāĨ¤
āĻĒā§āϰāĻĨāĻŽāĻāĻŋ āĻĒā§āϰāĻāĻžāĻļā§āϰ āĻĒāϰ āĻĨā§āĻā§ āĻŽā§āϝāĻžāĻļā§āϰ āĻĒāϰ āĻĨā§āĻā§ āĻĒā§āϰāĻžāϝāĻŧ āĻ āĻŋāĻ ā§§ āĻŦāĻāϰ āĻā§āĻā§ āĻā§āĻā§āĨ¤
āĻāĻ āĻŦāĻāϰ āĻā§āĻĄāĻŧā§ āĻāĻžāώāĻžāĻāĻŋāϰ āĻāϞā§āϞā§āĻāϝā§āĻā§āϝ āĻāύā§āύāϤāĻŋ āĻāϰāĻž āĻšāϝāĻŧā§āĻā§, āĻāϰ āĻ āύā§āĻ āĻĻāĻŋāĻ āύāĻŋāϝāĻŧā§ āĻāĻā§āϰāĻāĻžāĻŦā§ āĻāĻŋāύā§āϤāĻž āĻāϰāĻž āĻšāϝāĻŧā§āĻā§ āĻāĻŦāĻ āĻāϰ āĻāύā§āύāϝāĻŧāύā§āϰ āĻĻāĻŋāĻāύāĻŋāϰā§āĻĻā§āĻļāύāĻž āύāĻŋāϰā§āϧāĻžāϰāĻŖ āĻāϰāĻž āĻšāϝāĻŧā§āĻā§āĨ¤
āĻāĻŽāĻŋ āϏāĻŽā§āĻĒā§āϰāĻĻāĻžāϝāĻŧā§āϰ āϏāĻžāĻĨā§ āĻāĻ āϏāĻŦāĻāĻŋāĻā§ āĻāĻžāĻ āĻāϰ⧠āύāĻŋāϤ⧠āĻĒā§āϰ⧠āĻāύāύā§āĻĻāĻŋāϤāĨ¤
āĻĻāĻžāϝāĻŧāĻŋāϤā§āĻŦ āĻ āϏā§āĻŦā§āĻāĻžāϰ
āĻāĻ āĻĒā§āϰāĻāϞā§āĻĒāĻāĻŋ āϏāĻŽā§āĻĒā§āϰā§āĻŖ āĻā§āϏāĻžāĻš āĻĨā§āĻā§ āϤā§āϰāĻŋ āĻāϰāĻž āĻšāĻā§āĻā§ āĻāĻŦāĻ āĻĄāĻžāĻāύāĻžāĻŽāĻŋāĻ āĻĒā§āϰā§āĻā§āϰāĻžāĻŽāĻŋāĻ āĻāĻžāώāĻžāϰ āĻā§āώā§āϤā§āϰ⧠āĻŦāĻŋāĻļā§āĻŦ āĻāϧāĻŋāĻĒāϤā§āϝā§āϰ āĻā§āύ⧠āĻĻāĻžāĻŦāĻŋ āĻāϰ⧠āύāĻž!
āĻāĻ āĻāύā§āύāϝāĻŧāύāĻā§ āĻāĻŽāύ āĻā§āύ⧠āĻŽāĻžāύāĻĻāĻŖā§āĻĄ āĻšāĻŋāϏā§āĻŦā§ āĻŦāĻŋāĻŦā§āĻāύāĻž āĻāϰāĻž āĻāĻāĻŋāϤ āύāϝāĻŧ, āϝāĻž āĻ āϰā§āĻāύā§āϰ āĻāύā§āϝ āĻā§āώā§āĻāĻž āĻāϰāĻž āĻĒā§āϰāϝāĻŧā§āĻāύ; āĻĒā§āϰāĻāϞā§āĻĒāĻāĻŋ āĻāĻĻāϰā§āĻļ āύāϝāĻŧ, āĻāĻŋāύā§āϤ⧠āϤāĻž āϏāϤā§āϤā§āĻŦā§āĻ āĻāϰ āĻāύā§āύāϝāĻŧāύ āĻāĻāĻā§āĨ¤
āύāϤā§āύ āĻāĻŽā§āĻĒāĻžāĻāϞāĻžāϰ
āĻĒā§āϰāĻā§āĻā§āĻ āϰāĻŋāĻĒā§āĻāĻŋāĻāϰāĻŋāϰ /mashc āĻŦā§āϰāĻžāĻā§āĻā§ āĻāĻĒāύāĻŋ āĻāĻŽā§āĻĒāĻžāĻāϞāĻžāϰā§āϰ āĻāĻāĻāĻŋ āύāϤā§āύ āϏāĻāϏā§āĻāϰāĻŖ āĻĻā§āĻāϤ⧠āĻĒāĻžāĻŦā§āύ, āϝā§āĻāĻŋ āĻŽā§āϝāĻžāĻļ (āĻāĻžāώāĻžāĻāĻŋāϰ āĻĒā§āϰāĻĨāĻŽ āϏāĻāϏā§āĻāϰāĻŖ) āĻĻāĻŋāϝāĻŧā§ āϞā§āĻāĻž āĻšāϝāĻŧā§āĻā§āĨ¤
āĻāĻŽā§āĻĒāĻžāĻāϞāĻžāϰā§āϰ asm āϞāĻŋāϏā§āĻāĻŋāĻ-āĻ (āϏā§āĻā§āϝāĻžāĻ āĻāĻŋāĻāĻŽ-āĻāϰ āĻāύā§āϝ āĻ
ā§āϝāĻžāϏā§āĻŽā§āĻŦāϞāĻžāϰā§āϰ) āĻāĻāĻāĻŋ āĻā§āĻĄ āĻā§āύāĻžāϰā§āĻāϰ āĻāĻā§āĨ¤
āĻāĻŽāĻŋ āĻŦāϰā§āϤāĻŽāĻžāύ⧠āĻāĻžāĻāĻžāϰ (āĻā§āĻĄāĻŋāĻā§ ā§§.ā§Ž) āĻāύā§āϝ āĻā§āύāĻžāϰā§āĻāϰāĻāĻŋāϰ āĻāĻāĻāĻŋ āϏāĻāϏā§āĻāϰāĻŖ āϤā§āϰāĻŋ āĻāϰāĻāĻŋāĨ¤
āĻāĻŽā§āĻĒāĻžāĻāϞāĻžāϰā§āϰ āύāϤā§āύ āϏāĻāϏā§āĻāϰāĻŖāĻāĻŋ āĻāĻžāώāĻžāĻāĻŋāϰ āĻĒā§āϰāĻĨāĻŽ āϏāĻāϏā§āĻāϰāĻŖā§āϰ āĻāĻžāϰā§āϝāĻāĻžāϰāĻŋāϤāĻžāĻā§ āϏāĻŽā§āĻĒā§āϰā§āĻŖāϰā§āĻĒā§ āϏāĻŽāϰā§āĻĨāύ āĻāϰ⧠āĻāĻŦāĻ āϤāĻžāϰ āĻĒāϰāĻŋāĻĒā§āϰāĻ āĻšāĻŋāϏā§āĻŦā§ āĻāĻžāĻ āĻāϰā§āĨ¤
āύāϤā§āύ OOP
āĻāĻžāώāĻžāĻāĻŋāϰ āύāϤā§āύ āϏāĻāϏā§āĻāϰāĻŖā§ āĻā§āϞāĻžāϏ āύāĻŋāϝāĻŧā§ āĻāĻžāĻ āĻāϰāĻžāϰ āĻĒāĻĻā§āϧāϤāĻŋ āĻāĻāĻļāĻŋāĻāĻāĻžāĻŦā§ āĻĒā§āύāϰā§āĻāĻ āύ āĻāϰāĻž āĻšāϝāĻŧā§āĻā§āĨ¤
āĻā§āϞāĻžāϏ āĻŽā§āĻĨāĻĄ āĻā§āϞāĻžāϏā§āϰ āĻŦāĻĄāĻŋāϰ āĻā§āϤāϰ⧠āĻāĻŦāĻ āĻŦāĻžāĻāϰā§āĻ āĻā§āώāĻŖāĻž āĻāϰāĻž āϝāĻžāϝāĻŧāĨ¤
āĻā§āϞāĻžāϏāĻāĻŋāϰ āĻāĻāύ āĻāĻāĻāĻŋ āϏā§āϏā§āĻĒāώā§āĻ āĻāύāϏā§āĻā§āϰāĻžāĻā§āĻāϰ āĻāĻā§: initāĨ¤
āĻā§āĻĄ āĻāĻĻāĻžāĻšāϰāĻŖ:
...
class MyClass:
private:
var a, b
public:
init(a, b):
$a ?= a
$b ?= b
end
func Foo():
return $a + $b
end
end
func MyClass::Bar(c):
return $a + $b + c
end
...
āϝāĻĻāĻŋ āĻāϤā§āϤāϰāĻžāϧāĻŋāĻāĻžāϰ āĻāĻā§, āϤāĻžāĻšāϞ⧠āĻāĻŽāĻžāĻĻā§āϰ āϏāĻšāĻā§āĻ āĻāϤā§āϤāϰāĻžāϧāĻŋāĻāĻžāϰāϏā§āϤā§āϰ⧠āĻĒā§āϰāĻžāĻĒā§āϤ āĻāϞ (āϏā§āĻĒāĻžāϰ) āĻāϰāĻžāϰ āĻā§āώāĻŽāϤāĻž āĻĨāĻžāĻā§āĨ¤
āĻā§āĻĄ āĻāĻĻāĻžāĻšāϰāĻŖ:
...
class MySecondClass(MyClass):
public:
var c
init(a, b, c):
super(a, b)
$c ?= c
end
func Bar():
super($c)
end
end
...
x ?= new MySecondClass(10, 20, 30)
println( x -> Bar() ) // 60
āĻā§āϞāĻžāϏ āĻāύāϏā§āĻā§āϝāĻžāύā§āϏā§āϰ āĻŽā§āĻĨāĻĄāĻā§āϞā§āϰ āĻĄāĻžāĻāύāĻžāĻŽāĻŋāĻ āĻāĻāĻžāϰāϰāĻžāĻāĻĄāĻŋāĻ:
...
func Polymorph::NewFoo(c):
return $a + $b + c
end
...
x -> Foo ?= Polymorph -> NewFoo
x -> Foo(30) // 60
āĻĒā§āϝāĻžāĻā§āĻ/āύā§āĻŽāϏā§āĻĒā§āϏ
āύā§āĻŽāϏā§āĻĒā§āϏāĻāĻŋ āĻ
āĻŦāĻļā§āϝāĻ āĻĒāϰāĻŋāώā§āĻāĻžāϰ āϰāĻžāĻāϤ⧠āĻšāĻŦā§!
āϏā§āĻ āĻ
āύā§āϝāĻžāϝāĻŧā§, āĻāĻžāώāĻžāĻā§ āĻ
āĻŦāĻļā§āϝāĻ āĻāĻ āϏā§āϝā§āĻāĻāĻŋ āĻĒā§āϰāĻĻāĻžāύ āĻāϰāϤ⧠āĻšāĻŦā§āĨ¤
āĻŽā§āϝāĻžāĻļā§, āĻā§āύ⧠āĻā§āϞāĻžāϏ āĻŽā§āĻĨāĻĄ āϏā§āĻā§āϝāĻžāĻāĻŋāĻ āĻšāϞā§, āĻā§āĻĄā§āϰ āϝā§āĻā§āύ⧠āĻāĻžāϝāĻŧāĻāĻž āĻĨā§āĻā§ āϏā§āĻāĻŋāĻā§ āύāĻŋāϰāĻžāĻĒāĻĻā§ āĻāϞ āĻāϰāĻž āϝāĻžāϝāĻŧāĨ¤
āĻāĻĻāĻžāĻšāϰāĻŖ:
...
class MyPackage:
func MyFunc(a, b):
return a + b
end
end
...
println( MyPackage -> MyFunc(10, 20) ) // 30
āϝāĻžāĻāĻšā§āĻ, āĻāĻāĻžāĻŦā§ āĻāϞ āĻāϰāĻž āĻšāϞ⧠āϏā§āĻĒāĻžāϰ āĻ āĻĒāĻžāϰā§āĻāϰāĻāĻŋ āϏāĻ āĻŋāĻāĻāĻžāĻŦā§ āĻāĻžāĻ āĻāϰāĻŦā§āĨ¤
āĻŦā§āϝāϤāĻŋāĻā§āϰāĻŽ
āĻāĻžāώāĻžāϰ āύāϤā§āύ āϏāĻāϏā§āĻāϰāĻŖā§ āĻāĻā§āϞā§āĻā§ āĻā§āϞāĻžāϏ āĻšāĻŋāϏā§āĻŦā§ āĻāĻŖā§āϝ āĻāϰāĻž āĻšāϝāĻŧ:
...
try:
raise new Exception(
"My raised exception!"
)
catch E:
if E is Exception:
println(E)
else:
println("Unknown exception class!")
end
end
...
āύāϤā§āύ āĻāύāĻžāĻŽ
āĻāĻāύ āĻāύā§āĻŽāĻžāϰā§āĻļāύ āĻāĻĒāĻžāĻĻāĻžāύāĻā§āϞāĻŋāϤ⧠āϧā§āϰā§āĻŦāĻ āĻŽāĻžāύ āύāĻŋāϰā§āϧāĻžāϰāĻŖ āĻāϰāĻž āϝā§āϤ⧠āĻĒāĻžāϰā§:
enum MyEnum [
meFirst = "First",
meSecond = 2,
meThird
]
...
k ?= meSecond
...
if k in MyEnum:
...
end
āĻāĻŽāĻŦā§āĻĄā§āĻĄ āĻĒā§āϰā§āĻā§āϰāĻžāĻŽāĻŋāĻ āĻāĻžāώāĻž
āϏāĻŽā§āĻāĻžāĻŦā§āϝāĻāĻžāĻŦā§, āϞā§āϝāĻŧāĻž-āϰ āĻŽāϤ⧠āĻŽā§āϝāĻžāĻļāĻ āĻāĻāĻāĻŋ āĻāĻŽāĻŦā§āĻĄā§āĻĄ āĻĒā§āϰā§āĻā§āϰāĻžāĻŽāĻŋāĻ āĻāĻžāώāĻž āĻšāĻŋāϏā§āĻŦā§ āύāĻŋāĻā§āϰ āĻāĻāĻāĻŋ āϏā§āĻĨāĻžāύ āĻāϰ⧠āύāĻŋāϤ⧠āĻĒāĻžāϰā§āĨ¤
āĻāĻāϏāĻŦ āĻāĻžāĻā§āϰ āĻāύā§āϝ āĻŽā§āϝāĻžāĻļ āĻŦā§āϝāĻŦāĻšāĻžāϰ āĻļā§āϰ⧠āĻāϰāϤā§, āĻāĻĒāύāĻžāϰ āύāĻŋāĻā§āϰ āĻĨā§āĻā§ āĻĒā§āϰāĻā§āĻā§āĻāĻāĻŋ āĻŦāĻŋāϞā§āĻĄ āĻāϰāĻžāϰāĻ āĻĒā§āϰāϝāĻŧā§āĻāύ āύā§āĻāĨ¤
āĻŽā§āϝāĻžāĻļā§āϰ āĻāĻāĻāĻŋ āϰāĻžāύāĻāĻžāĻāĻŽ āĻāύāĻāĻžāϝāĻŧāϰāύāĻŽā§āύā§āĻ āϰāϝāĻŧā§āĻā§âāϝāĻž āĻāĻāĻāĻŋ āĻĒā§āϰā§āĻŖāĻžāĻā§āĻ āĻāĻĒāĻŋāĻāĻ āϏāĻš āĻĄāĻžāĻāύāĻžāĻŽāĻŋāĻ āϞāĻžāĻāĻŦā§āϰā§āϰāĻŋ āĻšāĻŋāϏā§āĻŦā§ āύāĻŋāϰā§āĻŽāĻŋāϤ āĻāĻāĻāĻŋ āϏā§āĻā§āϝāĻžāĻ-āĻāĻŋāϤā§āϤāĻŋāĻ āĻāĻŋāĻāĻŽāĨ¤
āĻāĻĒāύāĻžāĻā§ āĻļā§āϧ⧠āĻāĻāĻŋāĻā§ āĻāĻĒāύāĻžāϰ āĻĒā§āϰā§āĻā§āĻā§āĻā§āϰ āĻĄāĻŋāĻĒā§āύā§āĻĄā§āύā§āϏāĻŋāϤ⧠āϝā§āĻā§āϤ āĻāϰāϤ⧠āĻšāĻŦā§ āĻāĻŦāĻ āĻāϝāĻŧā§āĻāĻāĻŋ āĻāϞ āĻāϰāϤ⧠āĻšāĻŦā§āĨ¤
āĻāĻžāώāĻžāĻāĻŋ āύāĻŋāĻā§āĻ āĻāĻāĻāĻŋ āĻāĻŽāĻŦā§āĻĄā§āĻĄ āĻāĻžāώāĻž āĻšāĻŋāϏā§āĻŦā§ āĻāĻžāĻ āĻāϰāĻžāϰ āĻāĻžāϰā§āϝāĻāĻžāϰāĻŋāϤāĻž āĻĒā§āϰāĻĻāĻžāύ āĻāϰā§āĨ¤
āĻāĻāĻ āϏāĻžāĻĨā§, āĻāĻžāώāĻž āĻāĻŦāĻ āĻĨāĻžāϰā§āĻĄ-āĻĒāĻžāϰā§āĻāĻŋ āϞāĻžāĻāĻŦā§āϰā§āϰāĻŋāϰ āϏāĻžāĻĨā§ āĻāĻžāϰā§āϝāĻāĻžāϰāĻŋāϤāĻž āĻŦā§āϝāĻžāĻšāϤ āĻšāϝāĻŧ āύāĻžāĨ¤
āĻāĻŽāϰāĻž āĻāĻŽāύ āĻāĻāĻāĻŋ āĻāĻŽāĻŦā§āĻĄā§āĻĄ āϞā§āϝāĻžāĻā§āĻā§āϝāĻŧā§āĻ āĻĒāĻžāĻ, āϝāĻž āĻāϤ⧠āϞā§āĻāĻž āĻŦāĻŋāĻāĻŋāύā§āύ āĻĢā§āϰā§āĻŽāĻāϝāĻŧāĻžāϰā§āĻā§āϰ āĻĒā§āϰā§āĻŖ āĻļāĻā§āϤāĻŋ āĻŦā§āϝāĻŦāĻšāĻžāϰ āĻāϰāϤ⧠āĻĒāĻžāϰā§āĨ¤
āĻŽā§āϝāĻžāĻļ + āĻā§āĻāĻŋāĻāĻŽ
JVM-āĻāϰ āĻāύā§āϝ āĻā§āϰāĻžāύā§āϏāϞā§āĻāϰā§āϰ āĻāĻāĻāĻŋ āϏāĻāϏā§āĻāϰāĻŖ āϤā§āϰāĻŋ āĻāϰāĻž āĻļā§āϰ⧠āĻāϰā§āĻāĻŋāĨ¤
āϏāĻŽā§āĻāĻŦāϤ, āĻāĻŋāĻā§ āϏāĻŽāϝāĻŧ āĻĒāϰ Habr-āĻ āĻāĻ āĻŦāĻŋāώāϝāĻŧā§ āĻāĻāĻāĻŋ āĻĒā§āϏā§āĻ āĻĒā§āϰāĻāĻžāĻļāĻŋāϤ āĻšāĻŦā§āĨ¤
āĻĢāϞāĻžāĻĢāϞ
āĻā§āύ⧠āϏā§āύāĻŋāϰā§āĻĻāĻŋāώā§āĻ āĻĢāϞāĻžāĻĢāϞ āύā§āĻāĨ¤ āĻāĻāĻŋ āĻĢāϞāĻžāĻĢāϞā§āϰ āĻāĻāĻāĻŋ āĻ
āύā§āϤāϰā§āĻŦāϰā§āϤā§āĻāĻžāϞā§āύ āĻāĻĒāϏā§āĻĨāĻžāĻĒāύāĻžāĨ¤
⧍ā§Ļ⧍ā§Ļ āϏāĻžāϞ⧠āϏāĻāϞā§āϰ āĻāύā§āϝ āĻļā§āĻāĻāĻžāĻŽāύāĻžāĨ¤
āĻāϤā§āϏ: www.habr.com
