Ko Mash he reo whakahiato e whakahiato ana i a ia ano

Ko Mash he reo whakahiato e whakahiato ana i a ia ano

Tena koutou katoa i te tau hou 2020.

Mai i te whakaputanga o te tuatahi nohopuku Tata ki te 1 tau kua pahemo mo Mash.

I roto i tenei tau, i tino pai ake te reo, he maha nga ahuatanga i whakaarohia, ka whakatauhia te ahua o te whanaketanga.

E harikoa ana ahau ki te whakapuaki i enei mea katoa ki te hapori.

Whakakape

Ko tenei kaupapa e whakawhanakehia ana i runga i te ngakau hihiko anake, kaore e kii ki te rangatira o te ao i roto i nga kaupapa reo hotaka hihiri!

Ko tenei whanaketanga me kaua e kiia he paerewa hei tohenga; kaore te kaupapa i te pai, engari kei te whanake tonu.

GitHub
paetukutuku
forum

Kaihanga hou

I roto i te peka /mashc o te putunga kaupapa, ka kite koe i tetahi putanga hou o te kaikohikohi, kua tuhia ki te Mash (te putanga tuatahi o te reo).

He kaihanga waehere kei roto i te rarangi asm (mo te kaikohi mo te VM e pa ana ki te puranga).
I tenei wa kei te whakawhanake ahau i tetahi putanga o te kaihanga mo Java (JDK 1.8).

Ko te putanga hou o te whakahiato e tino tautoko ana i nga mahi o te putanga tuatahi o te reo me te whakakii.

OOP Hou

I roto i te putanga hou o te reo, ko te mahi me nga karaehe kua hangaia etahi waahanga.
Ka taea te whakaatu i nga tikanga karaehe i roto i te tinana o te karaehe me waho.
Kei roto i te karaehe he kaihanga marama: init.

Waehere tauira:

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

Mena ka puta he taonga tuku iho, katahi ka whai waahi maatau ki te hanga waea tuku iho (super).

Waehere tauira:

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

Ko te whakakorenga hihiko o nga tikanga mo nga tauira karaehe:

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

Mōkī/mokowāingoa

Me noho ma te mokowā ingoa!
No reira, ma te reo e whakarato tenei huarahi.
I roto i te Mash, ki te hee te tikanga karaehe, ka taea te karanga mai i tetahi waahanga o te waehere.

Hei tauira:

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

Ma te ara, ka tika te mahi a te super operator ina karangahia penei.

Tuhinga

I roto i te putanga hou o te reo ka rite ki nga karaehe:

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

Enum hou

Inaianei ka taea te tautapa nga huānga tatau ki nga uara tuturu:

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

Te reo whakauru

Ka taea pea, ka kitea e Mash tana niche hei reo hootaka whakauru, he rite ki a Lua.

Hei tiimata ki te whakamahi i te Mash mo enei kaupapa, kaore koe e hiahia ki te whakahiato i te kaupapa.

He Taiao Runtime a Mash - he VM e ahu mai ana i te puranga kua whakahiatohia hei whare pukapuka hihiri me te API katoa.

Ko nga mea katoa hei mahi maau ko te taapiri atu ki te whakawhirinaki o te kaupapa me te waea waea.

Ko te reo ake e whakarato ana i te mahi hei reo whakauru.
I te wa ano, karekau e pa te mahi tahi me te reo me nga whare pukapuka tuatoru.
Ka whiwhi tatou i tetahi reo whakauru ka taea te whakamahi i te mana katoa o nga momo anga kua tuhia ki roto.

Mash + JVM

I timata ahau ki te whakawhanake i tetahi putanga o te kaiwhakamaori mo te JVM.
Akene, i muri i te N te roa, ka puta he panui mo tenei kaupapa ki runga i a Habré.

Ngā putanga

Karekau he hua motuhake. He whakaaturanga takawaenga tenei o nga hua.
Waimarie ki te katoa i te tau 2020.

Source: will.com

Tāpiri i te kōrero