αα½ααααΈααααΆαααααΈ ααααΆαααα α’α α’α ααΆααα’ααααααΆα
α
αΆααααΆααααΈααΆαααααα»αααααΎαααααΌα
αααα»αα’αα‘α»αααααΆαααα ααΆααΆααααΌαααΆααααααα’αααΆαααααΆαα αα·αααααΆαααΆα αααΎαααααααΆααααΌαααΆααα·αααΌα α αΎαααα·α αααααααΆαα’αα·ααααααααααΌαααΆααααααα
αααα»αααΈαααΆααααα»αααΆαα
αααααααααΆααα’αααααααΆαα½ααα ααααα
ααΆααα·αααα½ααα»αααααΌα
ααααααααααααα»αααααΌαααΆααααααΎαα‘αΎαααααΎααΆαααΈαααΆαααα»ααααα αα·ααα·αααααΎαα»αααΆααΆαααααααααααα·ααααααα αααα»ααααααααααΆααΆααααααααααα·ααΈααΆααααα!
ααΆαα’αα·ααααααααααα·ααα½αααααΌαααΆαα αΆαααα»αααΆααΆαααααααΆααααααααΌααα·αααααααα ααααααααααα·ααααααααα ααα»ααααααΆαα αααααα»αα’αα·ααααα
αααααα·ααΈα αααααααααΈα
αα αααα»αααΆααΆ /mashc ααααααΆαααααααα α’αααα’αΆα ααΎαααααααααΈαααααααα·ααΈα ααααααααααααΌαααΆααααααααΆ Mash (ααααααααΌαααααΆααΆ)α
αααααα·ααΈα
αααααααΆααααΆαααΈααααααΎαααΌααα
αααα»ααααααΈ asm (αααααΆαα assembler αααααΆαα VM αααααΆαααΌαααααΆαααΎ stack)α
αα
αα
α»αααααααααα»ααααα»ααααααΎααααααααααααΆαααΈαααααΎααααααΆαα Java (JDK 1.8)α
ααααααααΈαααααααα·ααΈα αααααααΆαααααααΆαααααααααΌααα»αααΆαααααααααααΌαααααΆααΆ αα·ααααααααααααααΆα
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
αααα αα/α αααααααααα
α
ααααααααααααααΌαααααα’αΆα!
ααΌα
ααααα αΎα ααΆααΆααααΌααααααααα±ααΆααααα
αα
αααα»α Mash ααααα·αααΎ class method ααΊαα·αα·αααα ααΆα’αΆα
ααααΌαααΆαα α
ααααα»ααααα·ααΆαααΈαααααααΆαα½αααααΌαα
α§ααΆα ααα:
...
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 ααααΈα
α₯α‘αΌααααααΆαα»ααΆαααααα αΌαα’αΆα ααααΌαααΆααααααααααααααα
enum MyEnum [
meFirst = "First",
meSecond = 2,
meThird
]
...
k ?= meSecond
...
if k in MyEnum:
...
end
ααΆααΆαααααα
αααααΆαα»αα Mash α’αΆα ααααααααα·ααααααααααα½αααΆααΆααΆααααααααααα·ααΈαααααΆααααααα αααααααα ααΉα Lua α
ααΎααααΈα αΆααααααΎαααααΎ Mash αααααΆαααααααααααΆααααα α’ααααα·αα αΆαααΆα ααααααΌααααα»αααααααααααααα½αα―αααα
Mash ααΆα Runtime Environment - VM ααα’ααααΎααααααααΆαα αααααααΆαααααΆαααααΆαααααααΆαα½αααΉα API ααααααα
α’αααΈαααα’αααααααΌαααααΎααΊααααααααΆαα ααΆαα’αΆααααααααααααα α αΎαααααΎααΆαα α ααΌααααααααΈαααΈααα
ααΆααΆαααα½αααΆαααααααΌααα»αααΆαααΎααααΈααααΎααΆαααΆααΆααΆααααααα
αααα»ααααααΆαα½αααααΆααα ααΆαα’αα»αααααααααααΆααααΆαα½αααΆααΆ αα·ααααααΆαααααΆααΈααΈααΈαα·αααααΌαααΆααααααΆααααα
ααΎαααα½αααΆαααΆααΆαααααααααα’αΆα
ααααΎααΆαααααααααααααααααααααααααααααααΆαααααααα
αααα»αααΆα
Mash + JVM
αααα»αα
αΆααααααΎααααααΎαααααα’ααααααααααααααΆαα JVM α
αααα ααααΆαααααΆααααΈαααααα N ααΆααααα ααααΎαααααΆααααααααΉααααα αΆααα
ααΎHabreα
αααααα
αα·αααΆαααααααααΆααααΆααααα αααααΊααΆααΆαααααΆαααααα·ααααααααααααααα
ααΌαααααΆαααα’ααΆααα’ααααααΆαααα»αααααΆα α’α α’α α
ααααα: www.habr.com