Aloha mai kākou i ka makahiki hou 2020.
Mai ka hoolaha ana o ka mua
I loko o kēia makahiki, ua hoʻomaikaʻi maikaʻi ʻia ka ʻōlelo, ua noʻonoʻo ʻia nā ʻano he nui a ua hoʻoholo ʻia ke ʻano o ka hoʻomohala ʻana.
Hauʻoli wau e kaʻana like i kēia mau mea me ke kaiāulu.
Akahana
Ke kūkulu ʻia nei kēia papahana ma ka hoihoi wale nō a ʻaʻole hoʻohālike i ka noho aliʻi ʻana o ka honua ma ke kahua o nā ʻōlelo hoʻolālā hoʻoikaika!
ʻAʻole pono e noʻonoʻo ʻia kēia hoʻomohala ʻana ma ke ʻano he maʻamau e hoʻoikaika ʻia; ʻaʻole kūpono ka papahana, akā ke ulu nei naʻe.
Mea hōʻuluʻulu hou
Ma ka lālā /mashc o ka waihona papahana, hiki iā ʻoe ke ʻike i kahi mana hou o ka mea hoʻopili, i kākau ʻia ma Mash (ka mana mua o ka ʻōlelo).
Loaʻa i ka mea hōʻuluʻulu kahi code generator ma ka papa inoa asm (no ka mea hoʻohui no kahi VM i hoʻokumu ʻia).
I kēia manawa ke kūkulu nei au i kahi mana o ka generator no Java (JDK 1.8).
Kākoʻo piha ka mana hou o ka mea hōʻuluʻulu i ka hana o ka mana mua o ka ʻōlelo a hoʻopiha iā ia.
OOP hou
Ma ka mana hou o ka ʻōlelo, ua hoʻolālā ʻia ka hana me nā papa.
Hiki ke haʻi ʻia nā ʻano papa ma ke kino papa a ma waho.
I kēia manawa, loaʻa i ka papa kahi mea kūkulu kikoʻī: init.
Laʻana code:
...
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
...
Inā loaʻa ka hoʻoilina, a laila loaʻa iā mākou ka manawa e hana maʻalahi i nā kelepona hoʻoilina (super).
Laʻana code:
...
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
Ka hoʻopololei ʻana i nā ʻano hana ma nā hiʻohiʻona papa:
...
func Polymorph::NewFoo(c):
return $a + $b + c
end
...
x -> Foo ?= Polymorph -> NewFoo
x -> Foo(30) // 60
Nā pūʻolo / inoa inoa
Pono e hoʻomaʻemaʻe ka inoa inoa!
No laila, pono ka ʻōlelo e hāʻawi i kēia manawa.
Ma Mash, inā paʻa ke ʻano papa, hiki ke kāhea ʻia mai kahi ʻāpana o ke code.
Pākuhi:
...
class MyPackage:
func MyFunc(a, b):
return a + b
end
end
...
println( MyPackage -> MyFunc(10, 20) ) // 30
Ma ke ala, e hana pololei ka super operator ke kāhea ʻia ma kēia ʻano.
Nā kumu'ē aʻe
Ma ka mana hou o ka ʻōlelo, mālama ʻia lākou e like me nā papa:
...
try:
raise new Exception(
"My raised exception!"
)
catch E:
if E is Exception:
println(E)
else:
println("Unknown exception class!")
end
end
...
Enum hou
I kēia manawa hiki ke hāʻawi ʻia nā mea helu helu i nā waiwai mau:
enum MyEnum [
meFirst = "First",
meSecond = 2,
meThird
]
...
k ?= meSecond
...
if k in MyEnum:
...
end
ʻŌlelo i hoʻokomo ʻia
Loaʻa paha, hiki iā Mash ke loaʻa i kāna niche ma ke ʻano he ʻōlelo papahana i hoʻopili ʻia, e like me Lua.
No ka hoʻomaka ʻana e hoʻohana iā Mash no kēia mau kumu, ʻaʻole pono ʻoe e hōʻuluʻulu i ka papahana iā ʻoe iho.
Loaʻa iā Mash kahi Runtime Environment - kahi VM i hoʻokumu ʻia i ka stack i hōʻuluʻulu ʻia ma ke ʻano he waihona dynamic me kahi API piha.
ʻO nā mea a pau e pono ai ʻoe e hoʻohui iā ia i ka hilinaʻi o ka papahana a hana i ʻelua mau kelepona.
Hāʻawi ka ʻōlelo ponoʻī i ka hana e hana ma ke ʻano he ʻōlelo i hoʻopili ʻia.
I ka manawa like, ʻaʻole pili ka hana i hui pū me ka ʻōlelo a me nā hale waihona puke ʻaoʻao ʻekolu.
Loaʻa iā mākou kahi ʻōlelo i hoʻopili ʻia e hiki ke hoʻohana i ka mana piha o nā ʻano hana like ʻole i kākau ʻia i loko.
Mash + JVM
Ua hoʻomaka wau e hoʻomohala i kahi ʻano unuhi no ka JVM.
Malia paha, ma hope o N ka manawa, e ʻike ʻia kahi pou ma kēia kumuhana ma Habré.
Nā hopena
ʻAʻohe hopena kūikawā. He hōʻike waena kēia o nā hopena.
Laki maikaʻi i nā kānaka a pau i 2020.
Source: www.habr.com