Mash dia fiteny fandaharana izay manangona ny tenany

Mash dia fiteny fandaharana izay manangona ny tenany

Miarahaba antsika rehetra nahatratra ny taona vaovao 2020.

Hatramin'ny namoahana ny voalohany lahatsoratra Efa ho 1 taona katroka no lasa momba an'i Mash.

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.

GitHub
tranonkala
Forum

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

Add a comment