Miarahaba antsika rehetra nahatratra ny taona vaovao 2020.
Hatramin'ny namoahana ny voalohany
Tamin'ity taona ity dia nihatsara be ny fiteny, nodinihina tsara ny lafiny maro ary nofaritana ny vector amin'ny fampandrosoana.
Faly aho mizara izany rehetra izany amin'ny fiarahamonina.
Disclaimer
Ity tetikasa ity dia novolavolaina fotsiny amin'ny hafanam-po ary tsy miseho amin'ny fanjakazakan'izao tontolo izao eo amin'ny sehatry ny fiteny fandaharana mavitrika!
Tsy tokony hoheverina ho fenitry ny ezaka atao izany fampandrosoana izany; tsy mety ny tetikasa, fa mivoatra hatrany.
Mpanoratra vaovao
Ao amin'ny sampana /mashc amin'ny tahirin-tsarimihetsika dia afaka mahita dikan-teny vaovao amin'ny mpanangona ianao, izay voasoratra amin'ny Mash (ny dikan-teny voalohany).
Ny compiler dia manana mpamorona code amin'ny lisitry ny asm (ho an'ny assembler ho an'ny VM mifototra amin'ny stack).
Amin'izao fotoana izao aho dia mamolavola dikan-tsarimihetsika ho an'ny Java (JDK 1.8).
Ny dikan-teny vaovaon'ny mpanangom-bokatra dia manohana tanteraka ny fiasan'ny dikan-teny voalohany ary mameno azy io.
Ny OOP
Ao amin'ny dikan-teny vaovao, ny asa miaraka amin'ny kilasy dia novolavolaina amin'ny ampahany.
Ny fomba kilasy dia azo ambara na ao amin'ny vatan'ny kilasy na ivelan'izany.
Ny kilasy izao dia manana mpamorona mazava: init.
Kaody santionany:
...
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
...
Raha mitranga ny lova, dia manana fahafahana hanao antso lova (super) mora foana isika.
Kaody santionany:
...
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
Fanamafisana ny fomba fiasa amin'ny ohatra kilasy:
...
func Polymorph::NewFoo(c):
return $a + $b + c
end
...
x -> Foo ?= Polymorph -> NewFoo
x -> Foo(30) // 60
Packages/namespaces
Tsy maintsy madio foana ny espace name!
Noho izany, ny fiteny dia tsy maintsy manome izany fahafahana izany.
Ao amin'ny Mash, raha static ny fomba kilasy, dia azo antsoina soa aman-tsara amin'ny ampahany amin'ny code.
ohatra:
...
class MyPackage:
func MyFunc(a, b):
return a + b
end
end
...
println( MyPackage -> MyFunc(10, 20) ) // 30
Raha ny marina, ny super operator dia hiasa tsara rehefa antsoina amin'izany fomba izany.
maningana
Amin'ny dikan-teny vaovao dia raisina ho toy ny kilasy izy ireo:
...
try:
raise new Exception(
"My raised exception!"
)
catch E:
if E is Exception:
println(E)
else:
println("Unknown exception class!")
end
end
...
Ny enum
Ankehitriny dia azo omena sanda tsy miova ny singa fanisana:
enum MyEnum [
meFirst = "First",
meSecond = 2,
meThird
]
...
k ?= meSecond
...
if k in MyEnum:
...
end
Fiteny tafiditra
Mety ho hitan'i Mash ho toy ny fiteny fandaharana ao anatiny, mitovy amin'ny Lua.
Mba hanombohana mampiasa Mash ho an'ireo tanjona ireo dia tsy mila manangona ny tetikasa mihitsy ianao.
Mash dia manana Runtime Environment - VM miorina amin'ny stack natambatra ho tranomboky mavitrika misy API feno.
Ny hany ilainao atao dia ny manampy azy amin'ny fiankinan-doha amin'ny tetikasa ary manao antso roa.
Ny fiteny mihitsy no manome fonctionnaire hiasa ho fiteny tafiditra.
Mandritra izany fotoana izany, ny fampisehoana miaraka amin'ny fiteny sy ny tranomboky an'ny antoko fahatelo dia tsy misy fiantraikany.
Mahazo fiteny tafiditra izahay izay afaka mampiasa ny hery feno amin'ny rafitra isan-karazany voasoratra ao.
Mash + JVM
Nanomboka namolavola dikan-tenin'ny mpandika teny ho an'ny JVM aho.
Angamba, aorian'ny fotoana N, dia hisy lahatsoratra momba ity lohahevitra ity hiseho ao amin'ny HabrΓ©.
vokatra
Tsy misy vokatra manokana. Izany dia fanehoana manelanelana ny vokatra.
Mirary soa ho antsika rehetra amin'ity taona 2020 ity.
Source: www.habr.com