Kod blokları, bir kontrol yapısı veya bir fonksiyon ın bloklarıdır. Bir değişkenin veya bir fonksiyonun2>kapsayıcısı2> kod bloklarına erişebilir ve bu erişim global olabilir veya yerel
Değişkenler ve işlevlerin global kapsamı varsayılan olarak, ancak yerel kapsamınızı ilan etmek yaklaşık olarak daha iyidir, çünkü Luau global kapsamına erişirken yerel kapsamınızı erişir. Bir değişkeni veya işlevi yerel kapsamınızı ilan etmek için, isminizin önünde local anahtar kelimeyi yazın.
Scriptler başka scriptlerdeki global ve yerel değişkenleri veya işlevlere erişemez. Eğer değerleri ve işlevleri arasında paylaşmak istiyorsanız, ModuleScripts kullanın.
local helloWorld = 'Hello World!'
local function printHelloWorld()
print(helloWorld)
end
printHelloWorld() -- Hello World!
- Blok B erişebilir lokal değişkenlere erişebilir.
- Blok C erişebilir lokasyon değişkenleri ve işlevleri blok A ve B'deki bloklara.
- Blok A bloklarda yerel değişkenleri ve işlevleri erişemez * Blok B blok C'deki yerel değişkenlere erişemez blok C'ye erişemez.
Küresel Kapsama
Bir küresel değişken veya işlev ilan ettiğinizde, aynı skript içindeki herhangi bir kod bloklarına erişebilir. İşlevler ve küresel değişkenler, local kelimesiyle ilan etmediğinizde küresel alanınızın dışında kalır.
Aşağıdaki kodda, testVar lokal testFunc() işlevinde küresel bir alanı vardır. Luau, testFunc() ı aradığında, <
Example of global functions and variables
local function testFunc() -- yerel kapsayıcı
testVar = 64 -- küresel alan
end
testFunc()
print(testVar) -- 64
Aşağıdaki kod, global çeşitli çeşitlendir x``0 , 1 ile her itérationde 1> 2> for2> döngüsünün arttırıcı olarak 4> 24> ile sona eriyor ve sonra da son değeri 4 ile yazdırır.
x = 0 -- Küresel değişken "x"for i = 1, 4 dox += 1print("Global 'x' = " .. x)endprint("Global 'x' = " .. x)--[[ Sonuç çıkışı:Global 'x' = 1Global 'x' = 2Global 'x' = 3Global 'x' = 4Global 'x' = 4]]
Küresel ortam değişkenlerini ve işlevleri ilan etmek daha kolaydır, çünkü yazmak zorunda değilsiniz, ancak küresel ortam değişkenleri ve işlevleri yerel ortamın dezavantajlarına kıyasla şu şekilde dezavantajlıdır:
- Luau, bir hash arama ile küresel değişkenleri ve işlevleriye erişir, bu nedenle sözleşme imzalamaaçısından kullanımı pahalıdır. Bir küresel değişkeni aynı özellik döngüsünde kullanmak, yerel bir değişkeni aynı döngüde kullanmaktan daha yavaş bir şekilde 10'dan fazla performans elde edebilir.
- Luau, menzili sona erdiğinde yerel değişkenleri kaldırır, böylece hafıza kullanımını azaltır.
- Aynı kriptteki global değişkenler ve işlevlere erişebilirsiniz, ancak birden fazla kriptte değil. Bu nedenle, bir global değişken veya işlev için herhangi bir fayda sağmaz, bir upvalue veya bir 影 .
Yerel Kapsayıcı
Luau sadece kodunuzun ilan edildiği kod bloğunda yerel bir değişken veya işlevi erişebilir. Yerel kapsayışı olan bir değişken oluşturmak, değerinin ne zaman ve nerede değiştiği konusunda daha fazla kontrol sağlar.
Aşağıdaki kodda, testFunc() işlev
local function testFunc() -- yerel kapsayıcı
local testVar = 64 -- yerel kapsayıcı
print(testVar) -- 64
end
testFunc()
print(testVar) -- nil
Aşağıdaki kodda, yerel çeşitlendirici x 1. satırda 0 değerinde çeşitlendirici ile geleniyor. Luau, for 循环 ile ilgili farklı
local x = 0 -- Yerel değişken "x"for i = 1, 4 dolocal x = 1 -- Farklı "x", bu "for" döngüsü için yerelprint("Loop 'x' = " .. x)endprint("Initial 'x' = " .. x)--[[ Sonuç çıkışı:Loop 'x' = 1Loop 'x' = 1Loop 'x' = 1Loop 'x' = 1Initial 'x' = 0]]
Alınıyor
Yerel bir değeri ilan edip atadıktan sonra, yerel değişkenin kapsayıcısı olan aynı kapsayıcının içindeki işlevleri okuyabilirsiniz. Bu teknik şu şekilde bilinir: Yakalama .
Aşağıdaki kodda, işlev f lokal değişkeni x yakalar. x değişkeni 1> f1> içinde bir 4> upvalue4>'dir.
local x = 5
local function f()
print(x)
end
f() -- 5
print(x) -- 5
Gölgeleme
Bir yerel değişkeni ilan edip atadıktan sonra, kapsayıcı seviyesinde ve aşağıdaki kapsayıcı seviyelerinde okuyabilirsiniz. Eğer değişkeni aşağıdaki kapsayıcı seviyelerinde yeniden ilan edip atarsanız, aynı ismi kullanarak yeni bir yerel değişken oluş
Aşağıdaki kodda, Luau şu değişkeni gölgeleyin x . x``f() içindeki şu değişken bir 1>gölge1> değişkenidir.
local x = 5
local function f()
local x = 7
print(x)
end
f() -- 7
print(x) -- 5
Ayrıca, bir değer atamadan önce yerel bir değişkeni yeniden ilan edebilirsiniz, böylece değişkenin her iki değer seviyesinde de yeniden atayabilirsiniz. Yerel bir değişkeni değer atamadan önce değerini nil olarak ayarlar.
Aşağıdaki kodda, Luau y
local fruitName = "Chocolate"
local fruitTable = {
Lemon = "Yellow",
Apple = "Red",
Orange = "Orange"
}
local function getFruitByColor(color)
local fruitName
for key, value in fruitTable do
if value == color then
fruitName = key
end
end
return fruitName
end
local fruit = getFruitByColor("Yellow")
print(fruit) -- Limon
print(fruit .. ", not " .. fruitName) -- Lemon, not Chocolate