สเก็ต

*เนื้อหานี้แปลโดยใช้ AI (เวอร์ชัน Beta) และอาจมีข้อผิดพลาด หากต้องการดูหน้านี้เป็นภาษาอังกฤษ ให้คลิกที่นี่

scripting, บล็อกของโค้ดเป็นตัวแทนของ โครงสร้างการควบคุม หรือ ฟังก์ชัน ตัวบล็อกของตัวแทนของตัวแปรหรือฟัง

แปรและฟังก์ชันมีขอบเขตทั่วไปโดยปกติ แต่การประกาศพวกเขาด้วยขอบเขตท้องถิ่นจะดีกว่าเสมอเพราะ Luau เข้าถึงตัวแปรและฟังก์ชันท้องถิ่นได้เร็วกว่าตัวแปรและฟังก์ชันทั่วไป

สคริปต์ไม่สามารถเข้าถึงแปรและฟังก์ชันระดับโลกและในท้องถิ่นในสคริปต์อื่น หากคุณต้องการแชร์ค่าและฟังก์ชันระหว่างสคริปต์ใช้ ModuleScripts


local helloWorld = 'Hello World!'
local function printHelloWorld()
print(helloWorld)
end
printHelloWorld() -- Hello World!
  • บล็อก B สามารถเข้าถึงตัวแปรท้องถิ่นในบล็อก A ได้ * บล็อก C สามารถเข้าถึงตัวแปรและการใช้งานในบล็อก A และ B * บล็อก A ไม่สามารถเข้าถึงตัวแปรและการใช้งานในบล็อก B หรือ C ได้
  • บล็อก B ไม่สามารถเข้าถึงตัวแปรท้องถิ่นในบล็อก C ได้

มุมมองทั่วถึง

หลังจากที่คุณประกาศแปรหรือฟังก์ชันระดับโลกใด ๆ ใน สคริปต์เดียวกัน สามารถเข้าถึงได้ แปรและฟังก์ชันมีขอบเขตระดับโลกยกเว้นคุณจะประกาศพวกเขาด้วยคำว่า local การ์ดของคุณ

รหัสtestVar มีสเกลทั่วโลกภายใน testFunc() ฟังก์ชัน เมื่อ Luau เรีย

Example of global functions and variables

local function testFunc() -- สเกลท้องถิ่น
testVar = 64 -- ขอบเขต global
end
testFunc()
print(testVar) -- 64

รหัส, แปร global x เริ่มที่ 0 เพิ่มขึ้นโดย 1 กับแต่ละการเรียกใช้ของ 1>2> for1> ห่วงโซจู1> และพิมพ์อีกครั้งด้วย


x = 0 -- แก้ไขตัวแปร global "x"
for i = 1, 4 do
x += 1
print("Global 'x' = " .. x)
end
print("Global 'x' = " .. x)
--[[ ผลลัพธ์ออก:
Global 'x' = 1
Global 'x' = 2
Global 'x' = 3
Global 'x' = 4
Global 'x' = 4
]]

มันเป็นเรื่องง่ายกว่าที่จะประกาศตัวแปรและการใช้งานระดับโลก เพราะคุณไม่จำเป็นต้องพิมพ์มาก แต่ตัวแปรและการใช้งานระดับโลกมีข้อดีด้านด้านล่างเมื่อเปรียบเทียบกับตัวแปรและการใช้งานในระดับท้องถิ่น:

  • Luau เข้าถึงแปรและการใช้งานระดับโลกด้วยการค้นหาแฮช การดำเนินการการใช้แปรระดับโลกในวงแหวนเวลาสามารถทำให้มันทำงานเร็วกว่าการใช้แปรระดับโลกในวงแหวนเดี
  • Luau จัดการแปรงอ้างอิงในตอนท้ายของขอบเขต เพื่อลดการใช้หน่วยความจำ
  • คุณสามารถเข้าถึงแปรและการใช้งานระหว่างเดียวกันในสคริปต์เดียว แต่ไม่สามารถเข้าถึงแปรหรือการใช้งานระหว่างหลายสคริปต์ได้ ดังนั้นตัวแปรหรือการใช้งานระหว่างเดียวกันจึงไม่ได้ให

สเกลท้องถิ่น

Luau สามารถเข้าถึงแปรหรือคำสั่งในบล็อกของโค้ดที่คุณประกาศได้เท่านั้น การสร้างแปรด้วยสเกลบังคับให้คุณควบคุมได้มากขึ้นเมื่อแปรมีการเปลี่ยนแปลงในเวลาและสถานที่ที่แตกต่างกัน

รหัส, ฟังก์ชั


local function testFunc() -- สเกลท้องถิ่น
local testVar = 64 -- สเกลท้องถิ่น
print(testVar) -- 64
end
testFunc()
print(testVar) -- nil

รหัสตัวแปรท้องถิ่น x มีค่า 0 ในตรวจที่ 1 สามตัวแปรท้องถิ่น x


local x = 0 -- แปรตัว "x" ท้องถิ่น
for i = 1, 4 do
local x = 1 -- แปร "x" ที่แตกต่างกัน "สำหรับ" ห้องนี้
print("Loop 'x' = " .. x)
end
print("Initial 'x' = " .. x)
--[[ ผลลัพธ์ออก:
Loop 'x' = 1
Loop 'x' = 1
Loop 'x' = 1
Loop 'x' = 1
Initial 'x' = 0
]]

การจับกุม

หลังจากที่คุณประกาศและกำหนดตั้งแป้นหลักที่เป็นตัวแปรของตัวเองและกำหนดเขตของตัวแปรที่เป็นส่วนหนึ่งของเดียวกัน เทคนิคนี้เรียกว่า การจับกุม รหัส, ฟังก์ชัน f จับตัวแปรท้องถิ่น x ตัวแปร x ใน 1> f1> เป็น 4> upvalue 4> .


local x = 5
local function f()
print(x)
end
f() -- 5
print(x) -- 5

เงา

หลังจากที่คุณประกาศและกำหนดตัวแปรให้แล้วคุณสามารถอ่านมันในระดับของมันและระดับลูกหลาน หากคุณประกาศและกำหนดตัวแปรให้แล้วในระดับ

รหัสLuau เงาตัวแปร x ตัวแปร x ใน f() เป็นตัวแปร 1>เงา1> ตัวแปร


local x = 5
local function f()
local x = 7
print(x)
end
f() -- 7
print(x) -- 5

คุณยังสามารถยกเลิกการกำหนดค่าตัวแปรในระดับของตัวแปรโดยไม่ต้องการให้มีค่าใด ๆ จึงสามารถเปลี่ยนแปลงตัวแปรในทั้งระดับของตัวแปรและระดับลูกตัวแปรได้ Redeclaring a local variable without assigning a value to it sets its value to nil

ในตัวอักษรต่อไ


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) -- มะนาว
print(fruit .. ", not " .. fruitName) -- Lemon, not Chocolate