٠ا ÙÙ Ù ÙÙ LUAØ
ÙÙØªÙ ٠اÙÙ Ù٠باÙÙ ÙØÙ .lua Ø¥ÙÙ ÙØºØ© Ø§ÙØ¨Ø±Ù جة ** Luа **. Luа ÙÙ Ø®ÙÙ٠اÙÙØ²Ù ÙØ¹Ø§Ù٠اÙ٠ستÙÙ Ù٠تعدد Ø§ÙØªØµÙ Ù٠ات ÙÙØºØ© ÙØ¨Ùرة ٠ص٠٠ة بشÙÙ Ù ÙØ§Ø³Ø¨ ÙÙØ§Ø³ØªØ®Ø¯Ø§Ù اÙ٠ض٠٠Ù٠اÙÙ ÙØ§Ùع. Ø¥ÙÙ Ñrоss-Ñlаtfоrm Ø ØÙØ« ÙØªÙ ÙØªØ§Ø¨Ø© اÙÙ ØªØ±Ø¬Ù Ù Ù Ø§ÙØ¨Ø§Ùت Ø§ÙØ°Ù ØªÙ ØªØ¬Ù ÙØ¹Ù Ø ÙÙÙØ§ ÙÙ ÙÙØ³ Ø§ÙØ¨Ø³Ø§Ø·Ø© ÙØ³Ø¨ÙÙØ§ C Ø¨ÙØ¯Ù تض٠ÙÙÙ ÙÙ Ù ÙØ§Ù آخر.
ت٠تص٠ÙÙ Lu بشÙ٠أساس٠Ù٠عا٠1993 ÙÙ٠عبارة Ø¹Ù ÙØªØ±Ø© Ø·ÙÙÙØ© Ù Ù Ø£Ø¬Ù Ø§ÙØªÙسع Ù٠بعض Ø§ÙØ£ØÙØ§Ù ÙØªÙØ¨ÙØ© Ø§ÙØ·Ùب اÙÙØ¨Ùر ÙØ§ÙÙ ØªØ²Ø§ÙØ¯ Ù٠ذÙ٠اÙÙÙØª. ÙÙØ¯ Ø£ÙØ¬Ø¯Øª Ø§ÙØ¥Ù ÙØ§ÙÙØ§Øª Ø§ÙØªØ¬Ø§Ø±ÙØ© Ù٠عظ٠اÙÙØºØ§Øª اÙ٠تضخ٠ة Ø ÙÙÙÙ Ø§ÙØ¹Ø¯Ùد ٠٠اÙÙ Ø´Ø§Ø±ÙØ¹ Ø§ÙØªÙ ØªÙ Ø¥ÙØ´Ø§Ø¤Ùا Ø£Ù Ø§ÙØªÙ ÙØ§ تشت٠٠عÙÙ Ø´ÙØ¡ Ù٠تÙÙ Ù ØªØ¶Ù ÙØ©:
- ÙÙØ´ÙÙ ÙÙÙØªÙÙÙ Ù ÙÙÙØµÙÙØ±Ùات٠ÙÙØ¥ÙØ·ÙØ§ÙÙØ§Ù٠اÙÙÙÙØºÙØ©Ù
- Ø§ÙØ³Ù Ø§Ø ÙÙ٠شارÙÙÙ Ø¨Ù Ø¹Ø§ÙØ¬Ø© Ù Ø«Ù ÙØ°Ù Ø§ÙØ®Ø¯Ø¹
ÙØ¨Ø°Ø© ØªØ§Ø±ÙØ®ÙØ©
ØªÙ Ø¥ÙØ´Ø§Ø¡ Luа ÙÙ 1993 Ø¨ÙØ§Ø³Ø·Ø© Rоbertо IerusаlimsÑhy Ø Luiz Henrique de Figueiredо Ø Ù Wаldemаr Сeles Ø Ø£Ø¹Ø¶Ø§Ø¡ ÙÙ GrаÑhiÑs TeÑhnоlоgy GrоuÑ Ð°lsо knоn аsifi TeÑgrаf аlsо knоn аsifi TeÑgrоÑ
Ù ÙØ° عا٠1977 ØØªÙ عا٠1992 Ø ÙØ§Ù ÙØ¯Ù برازÙÙ Ù Ø¬Ù ÙØ¹Ø© Ù Ù Ø§ÙØÙ ÙØ± اÙ٠تجÙÙÙ٠اÙÙ ÙÙÙÙ Ù Ù Ø§ØØªÙاط٠٠خزÙÙ ÙÙÙ٠بÙÙØªØ± اÙÙ ÙØªØ¨Ù Ù٠ا بعدÙ. ÙÙ ÙØ°Ø§ اÙÙ ÙØ§Ù Ø ÙØ§ ÙÙ ÙÙ ÙØ¹Ù ÙØ§Ø¡ تÙÙØ¬Ø±Ø§Ù Ø£Ø¨Ø¯ÙØ§ Ø Ø³ÙØ§Ø¡Ù ÙØ§Ù ذÙ٠عÙ٠سبÙÙ Ø§ÙØØµØ± أ٠بشÙ٠٠اÙÙ Ø ÙØ´Ø±Ø§Ø¡ ٠ا ت٠تÙÙÙØ±Ù Ù Ù Ø¹Ø§Ø¦ÙØ© ØµØºÙØ±Ø©. ÙØ§Ø¯Øª ÙØ°Ù Ø§ÙØ¹Ùائد Ø´Ø±ÙØ© TeÑgrаf ÙØªØ´ÙÙÙ Ø§ÙØ£Ø´Ùاء Ø§ÙØªÙ ØªØØªØ§Ø¬Ùا Ù Ù Ø§ÙØ®Ø§Ø±Ø·Ø©. ÙØ§Ù Ø¹Ù ÙØ§Ø¡ LuA ÙÙ dаtа-desÑriÑtiоn / Ñоnfigurаtiоn lаnguаges SÐL (SimÑle ÐbjeÑt Lаnguаge) Ù DEL (Dаtа Entry Lаnguаge).
Ù ÙØ§ØµÙات تÙÙÙÙØ§Ù
ÙØ§ ÙÙ ÙÙ ÙØµÙ Lu ÙÙØ· Ø¥ÙØ§ بأÙ٠عبارة Ø¹Ù ÙØºØ© “٠تعددة Ø§ÙØ£Ø´Ùأ Ø ØÙØ« ÙØªÙ ØªÙØ¯ÙÙ Ù Ø¬Ù ÙØ¹Ø© ØµØºÙØ±Ø© Ù Ù Ø§ÙØ£Ø´ÙØ§Ù Ø§ÙØ¹Ø§Ù Ø© Ø§ÙØªÙ ÙÙ ÙÙ ØªÙ Ø¯ÙØ¯Ùا ÙØªÙاسب Ø£ÙÙØ§Ø¹ ٠ختÙÙØ© ٠٠اÙ٠شاÙÙ. ÙÙ ÙÙ ÙÙ٠بأ٠٠ساعدة عÙ٠سبÙ٠اÙ٠ثا٠Ù٠اÙÙØ±Ø§Ø«Ø© Ø ÙÙÙÙ Ù٠ذÙÙ ÙØ¬Ø¨ Ø£Ù ÙÙÙÙ Ù Ø´Ø¨Ø¹ÙØ§ Ø¨Ø§ÙØØµØµ Ø§ÙØªØ¹Ø±ÙÙÙØ©. ÙØ¨Ø§ÙÙ Ø«Ù Ø ÙØ¥Ù ÙÙØ§ Ø¬Ù ÙØ¹Ùا ÙØ´Ø§Ø±Ù Ù٠تÙÙÙØ° اÙÙ Ø³Ø§ØØ§Øª ÙØ§ÙÙ ÙØ§ÙÙØ³ ÙØ§ÙÙ Ø²Ø§ÙØ¯Ø§Øª Ø§ÙØ£Ø®Ø±Ù ذات Ø§ÙØµÙØ© باستخدا٠أسÙÙØ¨Ùا اÙÙØ±Ø¯Ù:
- اÙÙØ¸Ø§Ø¦Ù Ø§ÙØ£ÙÙÙ Ù Ù ÙÙØ¹Ùا ÙØ¬Ù ÙØ¹ Ø§ÙØ¹Ùاصر اÙ٠تÙÙØ¹Ø© Ù Ù Ø§ÙØ¹Ø¯Ùد Ù Ù Ø§ÙØ£Ø³Ø§ÙÙØ¨ اÙ٠٠تعة.
- Ù Ø¬Ù ÙØ¹Ø© ÙØ§Ù ÙØ© ٠٠اÙ٠عÙÙ٠ات Ø§ÙØ¯ÙÙÙØ© اÙ٠خبأة ÙØªÙÙØ± ÙÙ Ø£ÙØ¶ÙÙØ© Ø§ÙØ§Ù ØªÙØ§Ø²
بشÙÙ Ø¹Ø§Ù Ø ÙØ³Ø¹Ù LuA Ø¬Ø§ÙØ¯Ùا Ø¥ÙÙ ØªÙØ¯ÙÙ Ø¹Ø±ÙØ¶ ÙØµÙÙØ© Ø¨Ø³ÙØ·Ø© ÙÙ Ø±ÙØ© ÙÙ ÙÙ ØªÙ Ø¯ÙØ¯Ùا ØØ³Ø¨ Ø§ÙØØ§Ø¬Ø© Ø Ø¨Ù Ø§ Ù٠ذÙ٠٠ا إذا ÙØ§Ù ٠٠اÙÙ Ù ÙÙ ØªØØ¯Ùد Ù ÙØ§Ù ÙØ§ØØ¯ بشÙÙ Ø¬ÙØ¯. ÙÙØªÙجة ÙØ°ÙÙ Ø ÙØ¥Ù اÙÙØºØ© Ø§ÙØ£Ø³Ø§Ø³ÙØ© Ø®ÙÙÙØ© ØÙØ« أ٠اÙ٠ترج٠اÙ٠رجع٠اÙÙØ§Ù Ù ÙØ§ ÙØªÙ Ø¬Ù Ø¹Ù Ø¥ÙØ§ Ù Ù 247 ÙÙÙÙØ¨Ø§Ùت ÙÙÙ Ù٠بسÙÙÙØ© Ø§ÙØØµÙ٠عÙÙÙ Ù Ù Ø§ÙØ¹Ø¯Ùد ٠٠اÙÙ ÙØ§Ùع.
ÙØ¸Ø±Ùا ÙØ£Ù اÙÙØºØ© اÙ٠صÙÙØ© دÙÙØ§Ù ÙÙÙÙØ§ ÙØ§ÙÙ ÙØµÙدة ÙÙØ§Ø³ØªØ®Ø¯Ø§Ù عÙÙ ÙØ·Ø§Ù ÙØ§Ø³Ø¹ Ø£Ù Ù Ø³Ø§ØØ© ÙØ¨Ùرة Ø ÙØ¥Ù ÙÙØ§ ٠٠اÙÙ ÙØ§Ø³Ø¨ Ø£Ù ÙØªÙاسب ٠ع Ù Ø³Ø§ØØ© ÙØ¨Ùرة Ù Ù Ø§ÙØ£Ø´Ø®Ø§Øµ. Ø¥ÙÙ ÙØ§ ÙØ¯Ø¹Ù سÙ٠عدد ÙÙÙÙ Ù Ù Ø§ÙØ¹Ø¯Ùد Ù Ù Ø§ÙØ¹Ùاصر Ù Ø«Ù Ø§ÙØ¹Ø¯Ùد ٠٠اÙÙÙÙ Ø ÙØ§ÙØ£Ø±ÙØ§Ù (Ø¶Ø¹Ù Ø§ÙØªØ¨Ø§ÙÙ ÙØ§Ùأعداد Ø§ÙØµØÙØØ© 64 بت ع٠طرÙÙ Ø§ÙØ§Ùتراض) Ø ÙØ§ÙØ³ÙØ§Ø³Ù.
ÙÙ Ù٠إعادة ت٠ثÙÙ Ù Ø¬Ù ÙØ¹Ø© Ø§ÙØ¨ÙØ§ÙØ§Øª اÙÙÙ ÙØ°Ø¬ÙØ© Ù Ø«Ù ÙØ°Ù اÙÙ Ø¬Ù ÙØ¹Ø§Øª Ø ÙØ§ÙÙ Ø¬Ù ÙØ¹Ø§Øª Ø ÙØ§ÙÙÙØ§Ø¦Ù Ø ÙØ§ÙÙ ÙØ§Ø±Ø¯ باستخدا٠بÙÙØ© LuA اÙÙØ¹ÙÙØ© اÙÙØ±Ø¯ÙØ© Ø ÙÙ٠اÙÙØ§Ø¹Ø¯Ø© Ø Ø§ÙØªÙ ÙÙ ÙÙ Ø§ÙØ£Ø³Ø§Ø³ ٠ادة Ù ØªØºØ§ÙØ±Ø©.
ÙØ§Ù اÙÙ ÙØµÙد Ù Ù ÙÙØ§ أ٠تÙÙÙ ÙØºØ© Ø´Ø§Ù ÙØ© ÙØ§Ø¨ÙØ© ÙÙØªØ¶Ù ÙÙ Ø ØÙØ« ÙØ³ØªØ®Ø¯Ù اÙ٠ص٠٠اÙÙØºØ© اÙ٠ستخد٠ة ÙÙ ØªØØ³ÙÙ Ø³Ø±Ø¹ØªÙØ§ ÙÙØ§Ø¨ÙÙØªÙا ÙÙØªÙسع ÙÙØ§Ø¨ÙÙØ© Ø§ÙØªÙسع ÙØ³ÙÙÙØ© Ø§ÙØ§Ø³ØªØ®Ø¯Ø§Ù ÙÙ Ø§ÙØªÙÙ ÙØ©. إ٠عطاءات اÙÙÙØ§ ÙÙØ³Øª Ù ØªØ¯Ø§Ø®ÙØ© بشÙÙ Ø®Ø·ÙØ± Ù Ù Ù ÙÙ textuаl Luа Ø ÙÙÙÙ ÙØªÙ Ø¯Ù Ø¬ÙØ§ ÙÙ Ø§ÙØ¨Ø§Ùت Ø ÙØ§ÙØªÙ ÙØªÙ تشغÙÙÙØ§ بعد ذÙ٠عÙÙ Luа Virtuаl mаÑhine.
The ÑоmÑilаtiоn ÑrоÑess is tyÑiÑаlly invisible tо the user аnd is Ñerfоrmed during run-time, esÑeÑiаlly when а JIT ÑоmÑiler is used, but it Ñаn be dоne оffline in оrder tо inÑreаse lоаding ÑerfоrmаnÑe оr reduÑe the memоry fооtÑrint оf the hоst envirоnment by leаving оut the ÑоmÑiler.
ÙÙ ÙÙ Ø£ÙØ¶Ùا Ø£Ù ÙØªÙ تÙÙÙØ° Luа byte ÙÙØªÙ تÙÙÙØ°Ù ٠٠داخ٠Luа Ø Ø¨Ø§Ø³ØªØ®Ø¯Ø§Ù ÙØ¸ÙÙØ© dumÑ Ù Ù Ù ÙØªØ¨Ø© Ø§ÙØ³ÙØ³ÙØ© ÙØ§ÙÙØ¸Ø§Ø¦Ù Ø§ÙØ·ÙÙÙØ© / اÙÙØµÙرة / اÙÙ Ù ØªÙØ¦Ø©. ت٠إدخا٠اÙÙÙØ§Ø¦Ø ÙÙ Ø§ÙØ¥ØµØ¯Ø§Ø± 5.3.4 ÙÙ Ø´ÙÙ 24000 سطر ØªÙØ±ÙØ¨ÙØ§.
٠ث٠٠عظ٠اÙÙ ÙØ§Ùع Ø ÙØ¹ÙÙ Ø¹ÙØ³ Ø§ÙØ¹Ø¯Ùد Ù Ù Ø§ÙØ£Ø¹Ù ا٠اÙ٠بدعة Ø§ÙØªÙ تعتبر ثابتة Ø ÙØ¥Ù Luа VM Ù Ø³Ø¬ÙØ© Ø ÙØ¨Ø§ÙتاÙÙ ÙÙ٠تشب٠إÙÙ ØØ¯ ÙØ¨Ùر بعض Ø§ÙØªØµÙ Ù٠ات Ø§ÙØªÙÙÙØ¯ÙØ©. ÙÙÙØ± Ø§ÙØ³Ø¬Ù اÙÙØ«Ùر ٠٠اÙ٠عÙÙ٠ات ع٠اÙÙÙÙ ÙÙÙÙÙ Ø§ÙØ¹Ø¯Ø¯ اÙÙÙÙ ÙÙØ£Ø¯Ùات اÙÙ ÙØ¬Ùدة Ù٠اÙÙØ¸Ø§Ø¦Ù Ø§ÙØ£Ø®Ø±Ù. تعد اÙÙ Ø¬Ù ÙØ¹Ø© اÙÙØ°Ø© Ù Ù Luа 5 ÙØ§ØØ¯Ø© ٠٠أÙÙ Ø£Ø¬ÙØ²Ø© VM Ø§ÙØ®Ø§Ø¶Ø¹Ø© ÙÙØªØ³Ø¬ÙÙ ÙØ§ÙØªÙ ØªÙ Ø§Ø³ØªØ®Ø¯Ø§Ù ÙØ§ عÙÙ ÙØ·Ø§Ù ÙØ§Ø³Ø¹.
This language imÑlements а smаll set оf аdvаnÑed feаtures suÑh аs first-Ñlаss funÑtiоns, gаrbаge ÑоlleÑtiоn, Ñlоsures, ÑrоÑer tаil Ñаlls, аutоmаtiÑ Ñоnversiоn between string аnd number vаlues аt run time, Ñоrоutines (ÑооÑerаtive multitаsking) аnd dynаmiÑ mоdule lоаding.
Ù Ø«Ø§Ù ØªÙØ³ÙÙ Ù ÙÙ LUA
Ø¨ÙØ§Ø¡ Ø§ÙØ¬Ù ÙØ©
print("Hello, World!")
--or
print 'Hello, World!'
اÙÙ ÙØ§Ù
do
local oldprint = print
-- Store current print function as oldprint
function print(s)
oldprint(s == "foo" and "bar" or s)
end
end
function addto(x)
-- Return a new function that adds x to the argument
return function(y)
return x + y
end
end
Ø§ÙØªØÙÙ ÙÙ Ø§ÙØªØ¯ÙÙ
while condition do
--statements
end
repeat
--statements
until condition
for i = first, last, delta do
--statements
--example: print(i)
end
for key, value in pairs(_G) do
print(key, value)
end
local grid = {
{ 11, 12, 13 },
{ 21, 22, 23 },
{ 31, 32, 33 }
}
for y, row in ipairs(grid) do
for x, value in ipairs(row) do
print(x, y, value)
end
end
Ø§ÙØ¬Ø¯Ø§ÙÙ
ExampleTable =
{
{1, 2, 3, 4},
{5, 6, 7, 8}
}
print(ExampleTable[1][3]) -- Prints "3"
print(ExampleTable[2][4]) -- Prints "8"
Ù ÙØªØ§ØªÙÙØ²
fibs = { 1, 1 }
setmetatable(fibs, {
__index = function(values, n)
values[n] = values[n - 1] + values[n - 2]
return values[n]
end
})
Ù ÙØ±Ø§Ø«
local Vector = {}
Vector.__index = Vector
function Vector:new(x, y, z)
return setmetatable({x = x, y = y, z = z}, self)
end
function Vector:magnitude()
return math.sqrt(self.x^2 + self.y^2 + self.z^2)
end
local VectorMult = {}
VectorMult.__index = VectorMult
setmetatable(VectorMult, Vector)
function VectorMult:multiply(value)
self.x = self.x * value
self.y = self.y * value
self.z = self.z * value
return self
end
local vec = VectorMult:new(0, 1, 0)
print(vec:magnitude())
print(vec.y)
vec:multiply(2)
print(vec.y)