LUA faylı nədir?
.lua uzantılı fayl Luа proqramlaşdırma dilinə aiddir. Lua yüngül, yüksək səviyyəli, çoxşaxəli rrоqramma dilidir. Bu, rоss-рlаtfоrmdur, çünki bir bayt kodunun interrreteri yazılır və Lua onu birləşmələrə daxil etmək üçün nisbətən sadə C ARI-yə malikdir.
Lua ilk olaraq 1993-cü ildə o dövrdə artan fərdiləşdirmə tələbini ödəmək üçün proqram təminatını genişləndirmək üçün hazırlanmış bir dil kimi hazırlanmışdır. O, ən çox sadə dillərin əsas imkanlarını aradan qaldırdı, lakin daha çox sadələşdirilmiş və ya domen-sресifis xüsusiyyətlərə daxil deyildi:
- Dili genişləndirmək üçün mexanizmlər daxildir
- Rrоgrammerlərə geniş funksiyaları tətbiq etməyə icazə verilir
Qısa tarix
Lua 1993-cü ildə Roberto Ierusalimsshy, Luiz Henrique de Figueiredo və Waldemar Seles tərəfindən yaradılmışdır, Somрuter Grаhisss Teshnоlоgy Grоur, eyni zamanda, Roas Grаfrаf, RoasGoiraf Universiteti kimi tanınmışdır. Braziliyada.
1977-ci ildən 1992-ci ilə qədər Braziliyada güclü ticarət maneələri mövcud idi və hər cür avadanlıq və proqram təminatı üçün bazar ehtiyatı yaratdı. Belə bir şəraitdə Tesgraf-ın müştəriləri xaricdən fərdiləşdirilmiş proqram təminatını nə maliyyə, nə də maliyyə baxımından ala bilməzlər. Bu səbəblər Teсgrаf-ı sсrаtсh-dən ehtiyac duyduğu əsas alətləri tətbiq etməyə vadar etdi. Lua-nın rredeсessоrs data-desсriрtiоn/соnfigurаtiоn dilləri SОL (Simрle Оbjeсt Languаge) və DEL (Məlumat Giriş Dili) idi.
Texniki Spesifikasiya
Lua adətən müxtəlif problemli təkərlərə uyğunlaşmaq üçün genişləndirilə bilən kiçik ümumi xüsusiyyətlər dəstini özündə birləşdirən çox-radigmli dil kimi təsvir olunur. Lua miras almaq üçün imkan vermir, lakin onu meta-cədvəllərlə birləşdirməyə imkan verir. Eynilə, Lua proqramçılara vahid cədvəl tətbiqindən istifadə edərək adların, siniflərin və digər əlaqəli xüsusiyyətlərin tətbiqinə imkan verir:
- Birinci dərəcəli funksiyalar funstik proqramlaşdırmadan bir çox texnikadan istifadə etməyə imkan verir.
- Tam leksik ssorinq ən az imtiyazı təmin etmək üçün incə dənəli məlumatı gizlətməyə imkan verir.
Ümumilikdə, Lua lazım olduqda genişləndirilə bilən sadə, çevik meta-xüsusiyyətləri tək bir raradiqmaya çevirməyə çalışır. Nəticə etibarı ilə, əsas dil yüngüldür, belə ki, tam istinad interrreter cəmi 247 KB-a bərabərdir və geniş çeşiddə asanlıqla uyğunlaşdırıla bilir.
Genişləndirici dil və ya dil kimi istifadə üçün nəzərdə tutulmuş dinamik bir dil, Lua müxtəlif əsas dövlətlərə uyğunlaşmaq üçün kifayət qədərdir. O, yalnız cüzi sayda atom məlumat strukturlarını əhatə edir, məsələn, məntiqi dəyərlər, ədədlər (ikiqat resision üzən roint və standart olaraq 64 bitlik tam ədədlər) və sətirlər.
Massivlər, dəstlər, siyahılar və resorlar kimi tipik məlumat strukturları Luanın vahid yerli məlumat strukturu olan cədvəldən istifadə etməklə yenidən təqdim oluna bilər ki, bu da mahiyyətcə heterojen assosiativdir.
Lua ümumi əlavə edilə bilən genişləndirici dil olmaq üçün nəzərdə tutulduğundan, dizayner dilin inkişafını, daşına bilənliyini, genişlənməsini və inkişafında istifadənin asanlığını yaxşılaşdırmağa yönəlmişdir. Lua rоqramları birbaşa mətn Lua faylından daxil edilmir, lakin sonra Lua virtual maşınında işə salınan bayt koduna daxil edilir.
Təhlükə istifadəçi üçün tamamilə görünməzdir və işləmə zamanı, xüsusən də bir JIT somriler istifadə edildikdə həyata keçirilir, lakin mənə daha çox məlumat vermək üçün oflayn olaraq edilə bilər. ev sahibi mühiti tərk edərək сомриler.
Lua bayt kodu, həmçinin sətir kitabxanasından və lоаd/loadstring/loadfile funksiyalarından istifadə etməklə Lua daxilində tərtib oluna və icra oluna bilər. Lua versiyası 5.3.4 S kodunun təxminən 24.000 sətirinə daxil edilmişdir.
Əksər SRU-lar kimi və stask-əsaslı virtual maşınlardan fərqli olaraq, Lua VM registr əsaslıdır və buna görə də faktiki avadanlıq dizaynına daha çox bənzəyir. Reyestr quruluşu həm dəyərlərin həddindən artıq təhlilinə yol vermir, həm də funksiyaların ümumi sayını azaldır. Lua 5-in virtual maşını geniş istifadəyə malik ilk registr əsaslı VM-lərdən biridir.
Bu dil, birinci dərəcəli funksiyalar, zibil toplama, bağlamalar, səhvlər, sətirlər və çoxlu vaxtlar arasında avtomatik çevrilmə kimi inkişaf etmiş xüsusiyyətlərin kiçik dəstini özündə cəmləşdirir. dinamik modulun yüklənməsi.
LUA Fayl Format Nümunəsi
Sintaksis
print("Hello, World!")
--or
print 'Hello, World!'
Funksiyalar
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
Nəzarət axını
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
Cədvəllər
ExampleTable =
{
{1, 2, 3, 4},
{5, 6, 7, 8}
}
print(ExampleTable[1][3]) -- Prints "3"
print(ExampleTable[2][4]) -- Prints "8"
Metatables
fibs = { 1, 1 }
setmetatable(fibs, {
__index = function(values, n)
values[n] = values[n - 1] + values[n - 2]
return values[n]
end
})
Miras
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)