He kumu wehe no Luau, he ʻano nānā ʻano o ka ʻōlelo Lua

Hoʻolaha ʻia ke kumu wehe a me ka hoʻolaha ʻana o ka hoʻokuʻu kūʻokoʻa mua o ka ʻōlelo papahana Luau, e hoʻomau ana i ka hoʻomohala ʻana i ka ʻōlelo Lua a kūpono i hope me ka Lua 5.1. Hoʻolālā ʻia ʻo Luau no ka hoʻokomo ʻana i nā ʻenekini palapala i loko o nā noi a makemake e hoʻokō i ka hana kiʻekiʻe a me ka hoʻohana haʻahaʻa haʻahaʻa. Ua kākau ʻia ke code papahana ma C++ a wehe ʻia ma lalo o ka laikini MIT.

Hoʻonui ʻo Luau iā Lua me nā mana nānā ʻano a me kekahi mau hana syntactic hou e like me ka string literals. Ua kūpono ka ʻōlelo i hope me ka Lua 5.1 a me kekahi hapa me nā mana hou. Kākoʻo ʻia ka Lua Runtime API, e ʻae iā ʻoe e hoʻohana iā Luau me nā code a me nā mea paʻa. Hoʻokumu ʻia ka manawa holo ʻōlelo ma kahi code Lua runtime 5.1 i hana hou ʻia, akā ua kākau hou ʻia ka unuhi ʻōlelo. I ka wā o ka hoʻomohala ʻana, ua hoʻohana ʻia kekahi mau ʻenehana loiloi hou no ka loaʻa ʻana o ka hana kiʻekiʻe e hoʻohālikelike ʻia me Lua.

Ua hoʻomohala ʻia ka papahana e Roblox a hoʻohana ʻia i ke code o ke kahua pāʻani, nā pāʻani, a me nā noi mea hoʻohana o kēia hui, me ka mea hoʻoponopono Roblox Studio. I ka hoʻomaka ʻana, ua kūkulu ʻia ʻo Luau ma hope o nā pani pani, akā i ka hopena ua hoʻoholo ʻia e hoʻoneʻe iā ia i ke ʻano o nā papahana hāmama no ka hoʻomohala hui ʻana me ke komo ʻana o ke kaiāulu.

Nā Kiʻi Nui:

  • ʻO ka paʻi ʻana mālie, e noho ana i kahi kūlana waena ma waena o ka paʻi paʻa a me ka paʻa. ʻAe ʻo Luau iā ʻoe e hoʻohana i ka paʻi paʻa e like me ka mea e pono ai ma ke kuhikuhi ʻana i ka ʻike ʻano ma o nā hōʻike kikoʻī. Hāʻawi ʻia nā ʻano i kūkulu ʻia "kekahi", "nil", "boolean", "helu", "string" a me "thread". Ma ka manawa like, mālama ʻia ka hiki ke hoʻohana i ka dynamic type me ka ʻole o ka wehewehe ʻana i ke ʻano o nā loli a me nā hana. hana foo(x: helu, y: kaula): boolean local k: string = y: rep(x) return k == "a" hope
  • Kākoʻo ʻia no nā string literals (e like me ka Lua 5.3) e like me "\0x**" (hexadecimal number), "\u{**}" (Unicode character) a me "\z" (hope o ka laina), a me ka hiki iā ʻoe ke nānā i ka hoʻopololei ʻana i ka helu (hiki iā ʻoe ke kākau i 1_000_000 ma kahi o 1000000), literals no hexadecimal (0x...) a me nā helu binary (0b......).
  • Kākoʻo i ka huaʻōlelo "hoʻomau", hoʻokō i ka huaʻōlelo "break" i loaʻa, e lele i kahi hoʻololi hou.
  • Kākoʻo no nā mea hana hoʻonohonoho hui (+=, -=, *=, /=, %=, ^=, ..=).
  • Kākoʻo no ka hoʻohana ʻana i nā poloka "if-then-else" kūlana ma ke ʻano o nā hōʻike e hoʻihoʻi i ka waiwai i helu ʻia i ka wā o ka hoʻokō ʻana i ka poloka. Hiki iā ʻoe ke kuhikuhi i ka helu ʻole o nā ʻōlelo ʻē aʻe i loko o kahi poloka. maxValue kūloko = inā a > b a laila a ʻē aʻe b hōʻailona kūloko = inā x < 0 a laila -1 elseif x > 0 a laila 1 ʻē aʻe 0
  • ʻO ka hele ʻana o kahi ʻano hoʻokaʻawale (pahu one), kahi e hiki ai iā ʻoe ke holo i ka code hilinaʻi ʻole. Hiki ke hoʻohana ʻia kēia hiʻohiʻona no ka hoʻonohonoho ʻana i ka ʻaoʻao o ka hoʻomaka ʻana o kāu code a me ke code i kākau ʻia e kekahi mea hoʻomohala ʻē aʻe, no ka laʻana, nā hale waihona puke ʻekolu no ka palekana ʻaʻole hiki ke hōʻoia ʻia.
  • ʻO kahi palena o ka waihona maʻamau kahi i wehe ʻia ai nā hana i hiki ke hana i nā pilikia palekana. No ka laʻana, ʻo nā hale waihona puke "io" (ke kiʻi ʻana i nā faila a me nā kaʻina hoʻomaka), "package" (ke komo ʻana i nā faila a me ka hoʻouka ʻana i nā modules), "os" (nā hana no ke komo ʻana i nā faila a me ka hoʻololi ʻana i nā ʻano hoʻololi kaiapuni), "debug" (hana palekana me ka hoʻomanaʻo) , "dofile" a me "loadfile" (FS access).
  • Hāʻawi i nā mea hana no ka nānā ʻana i nā code static, ʻike i nā hewa (linter) a me ka nānā ʻana i ka hoʻohana pono ʻana i nā ʻano.
  • Pono ka parser hana kiʻekiʻe, ka unuhi ʻōlelo bytecode a me ka mea hoʻohui. ʻAʻole kākoʻo ʻo Luau i ka hōʻuluʻulu JIT, akā ua ʻōlelo ʻia ua hoʻohālikelike ʻia ka unuhi ʻōlelo Luau i ka hana me ka LuaJIT ma kekahi mau kūlana.

Source: opennet.ru

Pākuʻi i ka manaʻo hoʻopuka