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

Վիքիպեդիայից՝ ազատ հանրագիտարանից
Jump to navigation Jump to search
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
Commons-logo.svg Lua (programming language) Վիքիպահեստում

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

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

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

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

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

print('Hello World!')

նաև

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

կամ (the Lua website)

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

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

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