ฟังก์ชัน

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

หน้ากากเรื่องตลก เป็น บล็อกของโค้ด ที่คุณสามารถประมวลผลได้หลายครั้งตามคำสั่ง คุณยังสามารถเชื่อมต่อพวกเขาไปยัง อีเวนต์ หรือกำหนดให้เป็น 0> คําเรียกแ

ฟังก์ชันพื้นฐาน

คำอธิบายของฟังก์ชันรวมถึง:

  • สเก็บ ของเรือ ของฟังก์ชัน (โลกหรือ local )
  • คําว่าด้วย function คํา
  • ชื่อของฟังก์ชันใน camelCase
  • ค่าตัวแปรของฟังก์ชันในเชิญ ( () )
  • บล็อกของโค้ดหรือ "ร่างกาย" ของฟังก์ชัน
  • คำว่า end

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


-- ฟังก์ชันนี้ไม่มีพารามิเตอร์และกลับมาเป็นศูนย์
local function addOneAndTwo()
local result = 1 + 2
print(result)
end
-- การโทรคุณสมบัติฟังก์ชันโดยไม่มีการกลับ
addOneAndTwo() -- 3

ตัวแปร

ตัวแปรเป็นแปรที่คุณสร้างให้กับคุณสมบัติและใช้เฉพาะในคุณสมบัติของฟังก์ชันเท่านั้น ฟังก์ชันไม่มีตัวแปรโดยปกติ หากคุณเรียกฟังก์ชันด้วยมาร์คเกอร์มาก


-- ฟังก์ชันนี้มีสองตัวอักษร: num1 และ num2
local function addNumbers(num1, num2)
print(num1 + num2)
end
addNumbers(2, 3) -- 5
addNumbers(5, 6, 7) -- 11
addNumbers(9) -- attempt to perform arithmetic (add) on number and nil

กลับ

ในตัวของฟังก์ชัน, คำว่า return กลับผลจากการคำนวณ คุณสามารถกลับผลหลายตัวจากคำฟังก์ชันเดียว return จะจบกา


-- ฟังก์ชันนี้กลับมาหนึ่งค่าการกลับ
local function addNumbers(num1, num2)
local result = num1 + num2
return result
end
print(addNumbers(1, 2)) -- 3
local seven = addNumbers(3, 4)
print(seven) -- 7
-- ฟังก์ชันนี้กลับมาหลายค่า: จำนวนและความแตกต่าง
local function addAndSubtract(num1, num2)
local sum = num1 + num2
local difference = num1 - num2
return sum, difference
end
-- การโทรคุณสมบัติและคาดหวังผลการกลับมาหลายรายการ
local sum, difference = addAndSubtract(2, 3)
print(sum) -- 5
print(difference) -- -1

วิธี

วิธีเป็นคุณสมบัติของสมาชิกของวัตถุ เช่น คลาส หรือ ตาราง พวกเขาคาดหวังว่าวัตถุเอง ( self ) เป็นอาร์กุณต์แรก

เหล้านวัตถุใน Roblox ล้างลงจาก Instance และมีวิธีการใช้งานทั่วไปรวมถึง Instance:Destroy()``Class.Instance:Clone() และ 1> Class.Instance:FindFirstChild()1>


-- การทำลายส่วนหนึ่งด้วยเครื่องหมายจุลภาค (ฟังก์ชัน)
local firstPart = Instance.new("Part")
firstPart.Parent = workspace
print(firstPart.Parent) -- พื้นที่ทํางาน
firstPart.Destroy(firstPart)
print(firstPart.Parent) -- ไม่มี
-- การทำลายส่วนด้วยเครื่องหมาย colon (วิธี)
local secondPart = Instance.new("Part")
secondPart.Parent = workspace
print(secondPart.Parent) -- พื้นที่ทํางาน
secondPart:Destroy()
print(secondPart.Parent) -- nil

การกำหนดวิธี

เพื่อสร้างวิธีในตารางให้ใช้ชื่อวิธีเป็นสมุดเข็มและค่าวิธีเป็นตัวอย่าง ในการจัดลำดับของวิธี self ตัวแปรระบุวิธีของคุณ เมื่อคุณ

ในตัวอย่างต่อไปนี้, ตาราง testButton มีวิธีเป็นค่าของ changeEnabled กุญแจ. คุณสามารถตรวจสอบว่า self เป็นสิ่งที่อ้างอิงไปยังตารางพ่อของวิธีด้วยการพิมพ์


local testButton = {
enabled = true,
changeEnabled = function(self, isEnabled)
self.enabled = isEnabled
print(self.enabled)
end
}
print(testButton.enabled) -- จริง
-- เรียกวิธี
testButton:changeEnabled(false) -- false

คอลแล็ค

คอลแล็คเป็นระเบียบาลที่ประมวลผลตามคำขออื่นหรือกระบวนการ

การโทรกลับพื้นฐาน

ฟังก์ชันสามารถถูกผ่านไปยังฟังก์ชันอื่น เช่นฟังก์ชัน ปลอม สามารถใช้เพื่อให้สามารถดำเนินการได้ table.sort() แล้วใช้เพื่อเรียงลำดับรายการ <


local Players = game:GetService("Players")
local sortedPlayers = Players:GetPlayers()
table.sort(sortedPlayers, function(a, b)
-- ใช้คอลแล็กชันอันนุกรมเพื่อจัดเรียงผู้เล่นตามชื่อ
return a.Name < b.Name
end)

ใน API Roblox คอลแล็กชันเรียกคืนสมาชิกคุณสมบัติที่เขียนโดยเฉพาะ คอลแล็กชันเรียกคืนจะนำเสนอจนกว่าพวกเขาจะกลับมา คอลแล็กชันเรียกคืนที่ใช้กันอย่างแพร่หลายรวมถึง:

  • MarketplaceService.ProcessReceipt ซึ่งจัดการการซื้อผลิตภัณฑ์ของผู้พัฒนา
  • BindableFunction.OnInvoke ซึ่งเรียกฟังก์ชันเมื่อสคริปต์เรียก BindableFunction:Invoke(...)
  • RemoteFunction.OnClientInvoke ซึ่งเรียกฟังก์ชันเมื่อเซิร์ฟเวอร์เรียก RemoteFunction:FireClient(player, ...) หรือ RemoteFunction:FireAllClients(...)
  • RemoteFunction.OnServerInvoke ซึ่งเรียกฟังก์ชันเมื่อลูกค้าโทร RemoteFunction:InvokeServer(...)

เพื่อตั้งค่าคันธนูให้กับมันให้มันมีฟังก์ชัน เช่น BindableFunction.OnInvoke เป็นคั


local bindableFunction = Instance.new("BindableFunction")
bindableFunction.OnInvoke = function(number)
return 2 * number
end
print(bindableFunction:Invoke(42)) -- 84

เทคนิคการใช้งาน

ตัวจัดการอีเวนต์

คุณสามารถกำหนดคุณสมบัติที่เรียกว่า ตัวแปรจดหมายเหตุเมื่อเหตุการณ์เกิดขึ้น เพื่อดำเนินการเมื่อเหตุการณ์เกิดขึ้น ตัวอย่างเช่น คุณสาม


local Players = game:GetService("Players")
local function onPlayerAdded(player)
print(player.Name .. " joined the game!")
end
Players.PlayerAdded:Connect(onPlayerAdded)

ฟังก์ชันการปกปิดตัว

คุณสามารถสร้างฟังก์ชันโดยไม่มีชื่อที่เป็นที่รู้จักในนาม ฟังก

ในตัวอย่างต่อไปนี้คําเรียกสําหรับฟังก์ชัน task.delay() และตัวเร่งอีเว้นท์สําหรับฟังก์ชัน Players.PlayerAdded ทั้งสองเป็นฟังก์ชันที่ปลอมตัว


-- การทำงานแบบไม่ระบุในคันธูปโปรแกรมที่แสวงหา()
task.delay(2, function(exactTimeElapsed)
print(exactTimeElapsed) -- 2.0064592329945
end)
-- การทำงานแบบไม่ระบุตัวตนในตัวแทนอีเมนต์
local Players = game:GetService("Players")
Players.PlayerAdded:Connect(function(player)
print(player.Name .. " joined the game!")
end)

หน้าต่างในModuleScripts

คุณสามารถใช้ฟังก์ชันเหล่านี้ได้หลายครั้งในหลายสคริปโดยเก็บพวกเขาใน ModuleScripts พิมพ์Luau ดังนั้นคุณจึงสามารถเก็บพวกเขาในตารางกับข้อมูลอื่นๆ

คุณสมบัติต่างๆ

คุณสมบัติตัวแปรรับตัวอักษรใด ๆ จำนวนอะไรก็ได้ เช่น Globals.LuaGlobals.print() คือคุณสมบัติตัวแปร


print(2, "+", 2, "=", 2 + 2) --2 + 2 = 4
print(string.format("The %s is a %s!", "cake", "lie")) -- เค้กเป็นเรื่องโกหก!
print(string.char(115, 101, 99, 114, 101, 116)) -- secret

กำหนดค่าตัวแปรที่น่าสนใจ

เพื่อกำหนดคุณสมบัติต่างๆ คุณใช้ตัวแทน ... เป็นตัวประกอบสุดท้าย (ไม่ใช่ .. เครื่องดำเนินการ) คุณสามารถใส่ค่า ... ในตารางเพื่อความสะดวกใน


local function variadic(named, ...)
local arguments = {...} -- แพ็คอาร์กิตริกเพิ่มเติมลงในตาราง
print("Named argument =", named)
for i, value in arguments do
print("Input No.", i, "=", value)
end
end
variadic(10, "Hi", 20, "Variadic Function")
--[[ ผลลัพธ์ออก:
Named argument = 10
Input No. 1 = Hi
Input No. 2 = 20
Input No. 3 = Variadic Function
]]

การนำสมุดอัตรา

คุณสามารถจำกัดคุณสมบัติของระบบค่าตัวแปรได้โดยการหุ้มรอบค่าตัวแปรอื่นเพื่อส่งหรือส่งต่ออาร์กิวเมนต์จากระบบค่าตัวแปรไปยังอาร์กิวเมนต์อื่น


local function printAround(functionToPrintAround, ...)
print("Before")
functionToPrintAround(...)
print("After")
end
local function addNumbers(x, y, z)
print("x =", x)
print("y + z =", y + z)
end
printAround(addNumbers, 1, 2, 3)
--[[ ผลลัพธ์ออก:
Before
x = 1
y + z = 5
After
]]

การเรียกคุณสมบัติแบบผสมผสานด้วยแมทริค

หากคุณต้องการส่งรายการแท็บของค่าไปยังฟังก์ชัน global เช่น print() คุณสามารถใช้คุณสมบัติ global unpack() เพื่อส่งค่าของแท็บแทนที่จะเป็นแท็บเอง


local squares = {1, 4, 9, 16, 25}
print("The first 5 square numbers are:", unpack(squares))
-- The first 5 square numbers are 1 4 9 16 25