Fa'atalofa atu i tagata uma ile tausaga fou 2020.
Talu mai le lomiga muamua
I lenei tausaga, sa matua fa'aleleia atili le gagana, tele o ona itu sa mafaufau lelei ma fa'amautu le vete o le atina'e.
Ou te fiafia e faasoa atu nei mea uma i le nuu.
Tuuese
O lenei poloketi o loʻo atiaʻe naʻo luga o le naunautai ma e le faʻafoliga e pulea le lalolagi i le matata o gagana faʻalauiloa faʻalauiloa!
O lea atinae e le tatau ona avea o se tulaga e taumafai i ai; o le poloketi e le o se mea lelei, ae o loʻo atinaʻe.
Fa'aopoopo fou
I le /mashc lala o le fale teu oloa, e mafai ona e vaʻai i se faʻamatalaga fou o le tuʻufaʻatasia, lea e tusia i le Mash (le lomiga muamua o le gagana).
O loʻo i ai i le tagata faʻapipiʻi se faʻasologa o tulafono ile lisi asm (mo le faʻapipiʻi mo se VM faʻavae faʻavae).
O le taimi nei o loʻo ou atiaʻe se faʻasologa o le generator mo Java (JDK 1.8).
O le fa'afou fou a le tagata fa'apipi'i e lagolagoina atoatoa le fa'atinoga o le ulua'i fa'aliliuga o le gagana ma fa'amae'a ai.
OOP fou
I le fa'aliliuga fou o le gagana, o le galuega ma vasega ua toe fa'atulagaina se vaega.
E mafai ona fa'ailoa auala i vasega i totonu o le tino ma fafo atu.
Ua i ai nei i le vasega se faufale manino: init.
Fa'ata'ita'iga 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
...
Afai e tupu le tofi, ona tatou maua lea o le avanoa e faigofie ai ona faia ni valaau tuufaasolo (super).
Fa'ata'ita'iga 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
Fa'atosina fa'atosina o metotia ile vasega fa'ata'ita'iga:
...
func Polymorph::NewFoo(c):
return $a + $b + c
end
...
x -> Foo ?= Polymorph -> NewFoo
x -> Foo(30) // 60
afifi/igoa avanoa
E tatau ona mama le igoa avanoa!
O lea la, e tatau ona maua e le gagana lea avanoa.
I le Mash, afai o se auala vasega e tumau, e mafai ona valaʻau saogalemu mai soʻo se vaega o le code.
Faataitaiga:
...
class MyPackage:
func MyFunc(a, b):
return a + b
end
end
...
println( MyPackage -> MyFunc(10, 20) ) // 30
I le auala, o le super operator o le a galue saʻo pe a valaʻau i lenei auala.
Tuusaunoaga
I le fa'aliliuga fou o le gagana o lo'o fa'atinoina e pei o vasega:
...
try:
raise new Exception(
"My raised exception!"
)
catch E:
if E is Exception:
println(E)
else:
println("Unknown exception class!")
end
end
...
Enume fou
I le taimi nei, e mafai ona tuʻuina atu faʻasologa o elemene taua:
enum MyEnum [
meFirst = "First",
meSecond = 2,
meThird
]
...
k ?= meSecond
...
if k in MyEnum:
...
end
Gagana fa'apipi'i
E mafai, e mafai e Mash ona maua lona fa'ailoga o se gagana fa'apipi'i polokalame, e tutusa ma Lua.
Ina ia amata faʻaaoga Mash mo nei faʻamoemoega, e te le manaʻomia le faʻapipiʻiina o le poloketi oe lava ia.
Mash o loʻo i ai se Siosiomaga Taimi - o se VM faʻavae faʻapipiʻi tuʻufaʻatasia o se faletusi faʻamalosi ma se API atoa.
Pau lava le mea e tatau ona e faia o le faʻaopoopo i le faʻalagolago i le poloketi ma fai ni nai telefoni.
O le gagana lava ia e maua ai galuega e galue ai o se gagana fa'apipi'i.
I le taimi lava e tasi, e le afaina le faʻatinoga faʻatasi ma le gagana ma faletusi a isi vaega.
Matou te maua se gagana fa'apipi'i e mafai ona fa'aogaina le malosi atoa o fa'ava'a eseese o lo'o tusia ai.
Mash + JVM
Na amata ona ou atiaʻe se faʻaliliuga mo le JVM.
Masalo, a maeʻa le N taimi, o le a faʻaalia se pou i luga o lenei autu ile Habré.
O taunuʻuga
E leai ni fa'ai'uga fa'apitoa. O se fa'aaliga fa'avaitaimi lea o fa'ai'uga.
Manuia mo tagata uma ile 2020.
puna: www.habr.com