Tầm nhìn

*Nội dung này được dịch bằng AI (Beta) và có thể có lỗi. Để xem trang này bằng tiếng Anh, hãy nhấp vào đây.

Trong lập trình, một cục mã là thân của một cấu trúc điều khiển hoặc chức năng . Các phạm vi của một biến hoặc chức năng có thể là cục mã mà nó có thể truy c

Biến đổi và hàm có phạm vi toàn cầu bởi mặc định, nhưng nó thường là tốt hơn để tuyên bố chúng với phạm vi địa phương bởi vì Luau truy cập vào các biến đổi và hàm địa phương nhanh hơn so với toàn cầu. Để tuyên bố biến đổi hoặc hàm địa phươ

Script không thể truy cập các biến toàn cầu và địa phương hoặc chức năng trong các script khác. Nếu bạn muốn chia sẻ giá trị và chức năng giữa các script, hãy sử dụng ModuleScripts .


local helloWorld = 'Hello World!'
local function printHelloWorld()
print(helloWorld)
end
printHelloWorld() -- Hello World!
  • Block B có thể truy cập biến địa phương trong block A.
  • Block C có thể truy cập các biến đổi và hàm trong các khối A và B.
  • Block A không thể truy cập các biến đổi và hàm nội tại trong các khối B hoặc C.
  • Block B không thể truy cập biến địa phương trong block C.

Tầm nhìn toàn cầu

Sau khi bạn tuyên bố một biến toàn cầu hoặc chức năng, bất kỳ khối mã nào trong cùng một script có thể truy cập nó. Biến và chức năng có phạm vi toàn cầu trừ khi bạn tuyên bố chúng với local từ khóa.

Trong mã sau đây, testVar có phạm vi toàn cầu trong chức năng testFunc() địa phương. Khi Luau gọi chức năng

Example of global functions and variables

local function testFunc() -- phạm vi địa phương
testVar = 64 -- khoảng cách toàn cầu
end
testFunc()
print(testVar) -- 64

Trong mã sau đây, biến toàn cầu x bắt đầu tại 0 , tăng lên bằng cách 1 mỗi lần lặp lại của 1>2> for2> , và in lại sau đó với giá trị cuối cùng là 4.


x = 0 -- Biến toàn cầu "x"
for i = 1, 4 do
x += 1
print("Global 'x' = " .. x)
end
print("Global 'x' = " .. x)
--[[ Kết quả ra:
Global 'x' = 1
Global 'x' = 2
Global 'x' = 3
Global 'x' = 4
Global 'x' = 4
]]

Đơn giản hơn để tuyên bố các biến toàn cầu và hàm vì bạn không cần phải nhập nhiều, nhưng các biến toàn cầu và hàm có những điểm yếu sau đây so với các điểm mạnh so với các điểm mạnh so với các điểm mạnh so với các điểm mạnh so với các điểm mạnh so với các điểm mạnh so với

  • Luau acces global variables và functions with a hash look up, so it's expensive to use in terms of hiệu lực. Using a global variable in a time-critical loop can make it perform more than 10% slower than using a local variable in the same loop.
  • Luau xử lý các biến địa phương sau khi kết thúc phạm vi, giảm tốn nhớ.
  • Bạn có thể truy cập các biến toàn cầu và hàm trong cùng một script, nhưng không phải giữa các script. Do đó, một biến toàn cầu hoặc hàm không cung cấp bất kỳ lợi ích nào về một đối tượng ngoại tuyến, một upvalue hoặc một bóng tối .

Phạm vi địa phương

Luau chỉ có thể truy cập một biến hoặc hàm địa phương trong khu vực mã bạn tuyên bố nó. Tạo một biến với phạm vi địa phương cho phép bạn kiểm soát chặt chẽ hơn khi và nơi giá trị của nó thay đổi.

Trong mã sau đây, chức năng testFunc


local function testFunc() -- phạm vi địa phương
local testVar = 64 -- phạm vi địa phương
print(testVar) -- 64
end
testFunc()
print(testVar) -- nil

Trong mã sau đây, biến địa phương x có giá trị 0 ở dòng 1. Khi Luau lặp qua for lần lượt, một biến


local x = 0 -- Biến địa phương "x"
for i = 1, 4 do
local x = 1 -- Biến "x" khác nhau, địa phương cho lò xo này "for"
print("Loop 'x' = " .. x)
end
print("Initial 'x' = " .. x)
--[[ Kết quả ra:
Loop 'x' = 1
Loop 'x' = 1
Loop 'x' = 1
Loop 'x' = 1
Initial 'x' = 0
]]

T�� chục

Sau khi bạn tuyên bố và giao một biến địa phương và giao một chức năng trong phạm vi của nó, bạn có thể đọc nó trong các cấp độ phạm vi của nó và các chức năng của nó bị bao kín bởi cùng một khoảng không chứa biến địa phương. Đây là kỹ thuật được gọi là bắt chước .

Trong mã sau đây, hàm f bắt giữ biến địa phương x . Biến x trong 1> f1> là một 4> upvalue4> .


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

Bóng tối

Sau khi bạn tuyên bố và giao một biến địa phương và giao một biến địa phương, bạn có thể đọc nó trong cấp độ phạm vi của nó và cấp độ phạm vi của nó dưới. Nếu bạn tuyên bố và giao một biến

Trong mã sau đây, Luau bóc bóng biến x . Biến x trong f() là một biến 1>bóc bóng1> .


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

Bạn cũng có thể tái tuyên bố một biến địa phương mà không phải giao một giá trị cho nó để bạn có thể tái tuyên bố nó ở cả cấp độ ngữ cảnh và cấp độ con cái. Tuyên bố một biến địa phương mà không giao một giá trị cho nó đặt giá trị của nó thành nil .

Trong mã sau đây, Lu


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) -- Chanh
print(fruit .. ", not " .. fruitName) -- Lemon, not Chocolate