Lua (ծրագրավորման լեզու)

Վիքիպեդիայից՝ ազատ հանրագիտարանից
Lua
Изображение логотипа
Տեսակֆունկցիոնալ ծրագրավորման լեզու, օբյեկտ կողմնորոշված ծրագրավորման լեզու, scripting language?, բազմահարացուցային ծրագրավորման լեզու, իմպերատիվ ծրագրավորման լեզու, ծրագրավորման պրոցեդուրային լեզու, prototype-based programming language?, ծրագրավորման ինտերպրետացվող լեզու, ծրագրավորման կոմպիլյացվող լեզու, ազատ ծրագրային ապահովում և ֆայլի ֆորմատ
Կատարման ձևբազմապարադիկմային,պրոցեդուրային, ֆունկիցոնալ, օբյեկտ կողմնորոշված
Առաջացել է1993[1]
ՍտեղծողRoberto Ierusalimschy?[2]
ՆախագծողRoberto Ierusalimschy?
Ընդլայնումներ.lua[3][4], .luna, .lunaire և .anair
ՕՀբազմապլատֆորմ[5]
Համացանցի տվյալների տեսակtext/x-lua
Ներշնչվել էC++, Կլու, Simple Object Language, DEL?, SNOBOL?, Modula?, Modula-2 և Scheme
Ներշնչել էIo, GameMonkey, Squirrel, Falcon, MiniD, Julia
ԱրտոնագիրMIT արտոնագիր[6][7]
Անվանված էԼուսին
Կայքlua.org(անգլ.)(պորտ.)
Ելակոդgithub.com/lua/lua
 Lua (programming language) Վիքիպահեստում

Lua (պորտ.՝ «լուսին»), թեթև ծրագրավորման լեզու է նախագծված, որպես սկրիպտային լեզու ընդլայնելի իմաստաբանությամբ, որպես գլխավոր նպատակ։ Lua-ն քրոսպլատֆորմ է, քանի որ գրված է ANSI C-ով և համեմատաբար պարզ է C, API -ի նկատմամբ։

Հատկանիշներ[խմբագրել | խմբագրել կոդը]

Lua-ն հաճախ անվանում են մուլտիպարադիգմային լեզվով։ Այն ապահովում է հիմնական մեխանիզմների մի փոքր շարք։

Կոդի օրինակ[խմբագրել | խմբագրել կոդը]

Դասական Hello, World! ծրագիրը կարող է գրել է հետեւյալ կերպ.

print('Hello World!')

նաև

io.write('Hello World!\n')

կամ (the Lua website Արխիվացված 2016-03-04 Wayback Machine)

io.write("Hello world, from ",_VERSION,"!\n")

Մեկնաբանությւնների համար օգտագործում են հետևյալ սինտակսը։

-- Մեկնաբանությունները Lua-ում սկսվում է կրկնակի տողադարձով և շարունակվումմ է մինչև տողի վերջ։

--[[ Մեկից ավելի տողերը և մեկնաբանությունները 
     վերցնում են երկու քառակուսի փակագծեր։ ]]

Ֆակտորիալի ֆունկցիան իրականացվում է այս ֆունկցիայի օրինակով։

function factorial(n)
  local x = 1.
  for i = 2,n do
    x = x * i
  end
  return x
end

Ցիկլեր[խմբագրել | խմբագրել կոդը]

Lua-ն ունի ցիկլի չորս տեսակ while ցիկլ,do while ցիկլ, for ցիկլ և ընդհանուր for ցիկլ։

--պայման = true

while պայման do
  --հայտարարություններ
end

repeat
  --հայտարարություններ
until պայման

for i = first,last,delta do --delta-ն կարող է լինել բացասական, for ցիկլը թույլ է տալիս հաշվել կամ հետհաշվարկել։
  --հայտարարություններ
  --օրինակ՝ print(i)
end

Ընդհանուր for ցիկլ։

for key, value in pairs(_G) do
  print(key, value)
end

Ֆունկցիաներ[խմբագրել | խմբագրել կոդը]

Ֆունկցիաների հետ աշխատանքը, որպես առաջին կարգի օբյեկտներ ցույց է տրված հետևյալ օրինակում, որտեղ փոփոխվում է print ֆունկցիայի վարաքագիծը.

do
  local oldprint = print
  -- Պահպանում ենք տրված print ֆունկցիան իբրև oldprint
  function print(s)
    --[[ Վերասահմանում ենք print ֆունկցիան.]]
    oldprint(s == "foo" and "bar" or s)
  end
end

Աղյուսակներ[խմբագրել | խմբագրել կոդը]

Աղյուսակները տվյալների տեսակների ամենա կարևոր կաույցն են Lua-ում և հիմք են բոլոր օգտագործողների տվյալների տեսակում։ Lua-ում աղյուսակը իրենից ներկայացնում է զույգերի հավաքածու՝ բանալի։ Բանալին կարող է ստանալ ցանկացած արժեք բացի nil(չորոշված)-ից։

Աղյուսակները կառուցվում են հետևյալ {} սինտաքսով։

a_table = {} -- Ստեղծում է նոր, դատարկ աղյուսակ
a_table = {x = 10} -- Ստեղծում է աղյուսակ մեկ մուտքագրումով "x" վերագրելով 10
print(a_table["x"]) -- Տպում է ստեղնի հետ կապված արժեքը, այս դեպքում 10
b_table = a_table
b_table["x"] = 20 -- Այս աղյուսակում նրա արժեքը փոխվեց 20-ի.
print(b_table["x"]) -- Տպում է 20
print(a_table["x"]) -- Նույնպես տպում է 20, որովհոտև a_table և b_table դիմում են նույն աղյուսակին

Որպես գրառում[խմբագրել | խմբագրել կոդը]

Աղյուսակները հաճախ օգտագործում են, որպես գրառում՝ օգտագործելով նշանների հաջորդականություն, որպես բանալի։ Օրինակ՝

point = { x = 10, y = 20 } -- Ստեղծում է նոր աղյուսակ
print(point["x"]) -- Տպում է 10
print(point.x) -- Ունի նույն իմաստը, ինչը վերևի տողում է

Որպես անվանատարածք[խմբագրել | խմբագրել կոդը]

Օգտագործելով աղյուսակը՝ պահելու առնչվող ֆունկցիաները այն կարող է հանդես գալ, որպես անվանատարածք։

Point = {}

Point.new = function(x, y)
  return {x = x, y = y}  --  վերադարձնում է {["x"] = x, ["y"] = y}
end

Point.set_x = function(point, x)
  point.x = x  --  point["x"] = x;
end

Ծանոթագրություններ[խմբագրել | խմբագրել կոդը]

Արտաքին հղումներ[խմբագրել | խմբագրել կոդը]

Վիքիպահեստն ունի նյութեր, որոնք վերաբերում են «Lua (ծրագրավորման լեզու)» հոդվածին։