Mash ke puo ea mananeo e ipokellang

Mash ke puo ea mananeo e ipokellang

Ke le lumelisa bohle selemong se secha sa 2020.

Ho tloha ha ho phatlalatsoa ea pele poso Hoo e ka bang selemo se le seng se fetile ka Mash.

Selemong sena, puo e ile ea ntlafatsoa haholo, likarolo tse ngata tsa eona li ile tsa nahanoa ka botlalo, 'me ho ile ha khethoa vector ea tsoelo-pele.

Ke thabetse ho arolelana tsena tsohle le sechaba.

ikgololo

Morero ona o ntse o ntlafatsoa feela ka cheseho mme ha o iketse eka o busa lefats'e lefapheng la lipuo tse matla tsa mananeo!

Tsoelopele ena ha ea lokela ho nkuoa e le mokhoa o lokelang ho hahamalloa; projeke ha e ea nepahala, empa leha ho le joalo e ntse e tsoela pele.

GitHub
websaeteng
mang forum

Moqapi e mocha

Lefapheng la / mashc la polokelo ea morero, u ka bona phetolelo e ncha ea moqapi, e ngotsoeng ka Mash (phetolelo ea pele ea puo).

Moqapi o na le jenereithara ea khoutu lethathamong la asm (bakeng sa sekopanyi bakeng sa VM e thehiloeng ho stack).
Hajoale ke ntse ke nts'etsapele mofuta oa jenereithara ea Java (JDK 1.8).

Phetolelo e ncha ea moqapi e tšehetsa ka botlalo ts'ebetso ea phetolelo ea pele ea puo le ho e tlatsa.

OOP e ncha

Phetolelong e ncha ea puo, mosebetsi oa litlelase o hlophisitsoe bocha.
Mekhoa ea lihlopha e ka phatlalatsoa ka bobeli 'meleng oa sehlopha le ka ntle ho oona.
Sehlopha hona joale se na le sehahi se hlakileng: init.

Mohlala oa khoutu:

...
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
...

Haeba lefa le hlaha, joale re na le monyetla oa ho etsa mehala e futsitsoeng habonolo (super).

Mohlala oa khoutu:

...
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

Ho fetisoa ho matla ha mekhoa maemong a sehlopha:

...
func Polymorph::NewFoo(c):
  return $a + $b + c  
end
...
x -> Foo ?= Polymorph -> NewFoo
x -> Foo(30)    // 60

Liphutheloana/libaka tsa mabitso

Sebaka sa mabitso se tlameha ho lula se hloekile!
Ka hona, puo e tlameha ho fana ka monyetla ona.
Ho Mash, haeba mokhoa oa sehlopha o tsitsitse, o ka bitsoa ka mokhoa o sireletsehileng ho tsoa karolong efe kapa efe ea khoutu.

Mohlala:

...
class MyPackage:
  func MyFunc(a, b):
    return a + b  
  end
end
...
println( MyPackage -> MyFunc(10, 20) )    // 30

Ka tsela, super operator o tla sebetsa ka nepo ha a bitsoa ka tsela ena.

Likhetho

Mofuteng o mocha oa puo ba tšoaroa joalo ka lihlopha:

...
try:
  raise new Exception(
    "My raised exception!"
  )
catch E:
  if E is Exception:
    println(E)
  else:
    println("Unknown exception class!")
  end
end
...

Enum e ncha

Hona joale likarolo tsa ho bala li ka abeloa boleng bo sa feleng:

enum MyEnum [
  meFirst = "First",
  meSecond = 2,
  meThird
]
...
k ?= meSecond
...
if k in MyEnum:
  ...
end

Puo e kenyelelitsoeng

Mohlomong, Mash e ka fumana niche ea eona e le puo ea lenaneo e kentsoeng, e ts'oanang le Lua.

Ho qala ho sebelisa Mash bakeng sa merero ena, ha ho hlokahale hore u bokelle morero ka bouena.

Mash e na le Tikoloho ea Runtime - VM e thehiloeng ho stack e hlophisitsoeng e le laeborari e matla e nang le API e felletseng.

Seo u hlokang ho se etsa feela ke ho e eketsa molemong oa projeke ebe o etsa mehala e 'maloa.

Puo ka boeona e fana ka ts'ebetso ea ho sebetsa joalo ka puo e kentsoeng.
Ka nako e ts'oanang, ts'ebetso e amanang le lipuo le lilaebrari tsa mokha oa boraro ha e amehe.
Re fumana puo e kentsoeng e ka sebelisang matla a felletseng a meralo e fapaneng e ngotsoeng ho eona.

Mash + JVM

Ke ile ka qala ho hlahisa phetolelo ea mofetoleli bakeng sa JVM.
Mohlomong, ka mor'a nako ea N, poso e mabapi le sehlooho sena e tla hlaha ho Habré.

Liphello

Ha ho liphetho tse itseng. Ena ke boemeli ba mahareng ba liphetho.
Mahlohonolo ho bohle ka 2020.

Source: www.habr.com

Eketsa ka tlhaloso