Luau globals
*เนื้อหานี้แปลโดยใช้ AI (เวอร์ชัน Beta) และอาจมีข้อผิดพลาด หากต้องการดูหน้านี้เป็นภาษาอังกฤษ ให้คลิกที่นี่
สรุป
ฟังก์ชัน
โยนข้อผิดพลาดหากที่ให้ไว้ value ถูกแก้ไขเป็น false หรือ nil
หยุดการดำเนินการของスレッドและโยนข้อผิดพลาด
restores ขนาดกองหน่วยความจำทั้งหมดในกิโลไบต์
คืนค่า metatable ของตารางที่กำหนดไว้
คืนฟังก์ชัน iterator และตารางสำหรับใช้ในลูป for
คืนรหัสที่ให้ไว้เป็นฟังก์ชันที่สามารถดำเนินการได้
สร้างว่างเปล่า userdata โดยมีตัวเลือกสำหรับการมีตาราง
ฟังก์ชัน iterator สำหรับใช้ในลูป
คืนฟังก์ชัน iterator และตารางที่ให้มาสำหรับใช้ในลูป for รอบ
รันฟังก์ชันที่ให้มาและจับข้อผิดพลาดที่มันโยน ส่งคืนความสําเร็จของฟังก์ชันและผลลัพธ์ของมัน
พิมพ์ค่าทั้งหมดที่ให้ไว้ในออก
คืนว่า v1 เท่ากับ v2 โดยข้าม metamethods ของพวกเขา
รับค่าจริงของ table[index] โดยข้ามวิธีการเมตาใดๆ
คืนความยาวของสตริงหรือตารางโดยข้ามวิธีการเมตาใดๆ
ตั้งค่าค่าจริงของ table[index] โดยข้ามวิธีการใดๆ
คืนค่าที่กลับโดย ModuleScript ที่กำหนด หากยังไม่ได้รันแล้วจะรันมัน
คืนคำถามทั้งหมดหลังจากดัชนีที่กำหนดแล้ว
ตั้ง metatable ของโต๊ะที่กำหนดไว้
คืนค่าที่กำหนดให้แปลงเป็นตัวเลขหรือ nil หากไม่สามารถทำได้
คืนค่าที่กำหนดให้แปลงเป็นสตริงหรือ nil หากไม่สามารถทำได้
ส่งคืนประเภทพื้นฐานของวัตถุที่ให้มา
คืนองค์ประกอบทั้งหมดจากรายการที่กำหนดเป็น tuple
คล้ายกับ pcall() ยกเว้นใช้ตัวจัดการข้อผิดพลาดที่กําหนดเอง
ฟังก์ชัน
assert
โยนข้อผิดพลาดหาก value ที่ให้มาเป็น false หรือ nil หากคําสั่งสําเร็จจะส่งค่าทั้งหมดที่ส่งไปให้กลับ
local product = 90 * 4assert(product == 360, "Oh dear, multiplication is broken")-- The line above does nothing, because 90 times 4 is 360
พารามิเตอร์
มูลค่าที่จะถูกอ้างถึงกับ
ข้อความที่จะแสดงในข้อผิดพลาดหากการอ้างสิทธิ์ล้มเหลว
ส่งค่ากลับ
error
สิ้นสุดฟังก์ชันป้องกันล่าสุดที่เรียกและออก message ยกเลิกpcall() แล้วสคริปต์ที่เรียกฟังก์ชันจะสิ้นสุดลงฟังก์ชันข้อผิดพลาดเองไม่เคยกลับและทำหน้าที่เหมือนข้อผิดพลาดของสคริปต์
อาร์กิวเมนต์ level ระบุวิธีการรับตำแหน่งข้อผิดพลาดด้วยระดับ 1 (เริ่มต้น) ตำแหน่งข้อผิดพลาดคือที่ที่ฟังก์ชันข้อผิดพลาดถูกเรียกระดับ 2 ชี้ข้อผิดพลาดไปที่ฟังก์ชันที่เรียกข้อผิดพลาด; และอื่นๆการผ่านระดับ 0 หลีกเลี่ยงการเพิ่มข้อมูลตำแหน่งข้อผิดพลาดในข้อความ
พารามิเตอร์
ข้อความข้อผิดพลาดที่จะแสดง
ระดับของข้อมูลที่ควรพิมพ์ ค่าเริ่มต้นคือ 1
ส่งค่ากลับ
getmetatable
ส่งคืน metatable ของตารางที่กำหนด t หากมีหนึ่ง, มิฉะนั้นจะส่งคืน nilหาก t มีตารางเมตาและวิธีการเมตา __metatable ถูกตั้งค่า จะส่งค่านั้นแทน
-- สาธิต getmetatable:local meta = {}local t = setmetatable({}, meta)print(getmetatable(t) == meta) --> จริง-- ทำให้ metatable ดั้งเดิมไม่สามารถกู้คืนได้โดยการตั้งค่า __metatable metamethod:meta.__metatable = "protected"print(getmetatable(t)) --> protected
พารามิเตอร์
วัตถุที่จะดึง metatable ของ
ส่งค่ากลับ
ipairs
ส่งคืนสามค่า: ฟังก์ชัน iterator, ตาราง t และหมายเลข 0ทุกครั้งที่ฟังก์ชัน iterator ถูกเรียก จะส่งคืนคู่ดัชนีตัวเลขถัดไปในตารางเมื่อใช้ในลูปทั่วไป for ค่าการคืนสามารถใช้เพื่อจัดเตรียมการเลื่อนผ่านแต่ละดัชนีทางเลขในตาราง:
local fruits = {"apples", "oranges", "kiwi"}for index, fruit in ipairs(fruits) doprint(index, fruit) --> 1 แอปเปิ้ล 2 ส้ม 3 กีวี ฯลฯend
พารามิเตอร์
ตารางที่องค์ประกอบจะต้องถูกซ้ำไป
loadstring
โหลดโค้ด Luau จากสตริงและส่งคืนเป็นฟังก์ชัน
ไม่เหมือนกับ Lua 5.1 มาตรฐาน Roblox's Luau ไม่สามารถโหลดโค้ดไบนารีที่สร้างขึ้นได้โดยใช้ loadstring()
loadstring() ถูกปิดใช้งานโดยค่าเริ่มต้น สำหรับคำแนะนำเกี่ยวกับการเปิดใช้งาน โปรดดูที่ ServerScriptService
คําเตือน: วิธีนี้ปิดการปรับแต่ง Luau บางอย่างในฟังก์ชันที่คืนกลับควรใช้ความระมัดระวังสูงสุดเมื่อใช้ loadstring() ; หากความตั้งใจของคุณคือการอนุญาตให้ผู้ใช้รันโค้ดในประสบการณ์ของคุณ ให้แน่ใจว่าปกป้องสภาพแวดล้อมที่ส่งคืนโดยใช้ getfenv() และ setfenv()
พารามิเตอร์
ส่งค่ากลับ
next
คืนคู่กุญแจ/ค่าแรกในอาร์เรย์หากอาร์กิวเมนต์ lastKey ถูกระบุแล้วจะคืนองค์ประกอบถัดไปในรายการตามคีย์ที่ให้ไว้ลำดับที่ดัชนีถูกจัดเรียงไม่ได้ระบุไว้ แม้แต่สำหรับดัชนีเชิงตัวเลขเพื่อข้ามตารางในลำดับตัวเลขใช้ตัวเลขสำหรับลูปหรือ ipairs
พฤติกรรมถัดไปจะไม่ถูกกำหนดหากในระหว่างการเดินทางคุณกำหนดค่าใดๆ ให้กับฟิลด์ที่ไม่มีอยู่ในตารางคุณอาจปรับแต่งฟิลด์ที่มีอยู่ได้โดยเฉพาะอย่างยิ่งคุณสามารถล้างฟิลด์ที่มีอยู่ได้
พารามิเตอร์
คอลเลกชันที่จะสำรวจ
กุญแจล่าสุดที่ได้รับก่อนหน้านี้จากการโทรไปที่ต่อไป
ส่งค่ากลับ
pairs
คืนฟังก์ชัน iterator, ตารางที่ส่ง t และ nil เพื่อให้การสร้างจะเลื่อนผ่านคู่กุญแจ/ค่าทั้งหมดของตารางนั้นเมื่อใช้ในลูปทั่วไป for :
local scores = {["John"] = 5,["Sally"] = 10}for name, score in pairs(scores) doprint(name .. " has score: " .. score)end
พารามิเตอร์
ตารางอาร์เรย์หรือสารบัญที่จะเรียกซ้ำได้
pcall
เรียกฟังก์ชัน func ด้วยอาร์กิวเมนต์ที่กำหนดในโหมดป้องกันซึ่งหมายความว่าข้อผิดพลาดใดๆ ภายใน func จะไม่แพร่กระจาย; แทน, pcall() จะจับข้อผิดพลาดและส่งรหัสสถานะกลับผลลัพธ์แรกคือรหัสสถานะ (เป็นบูลีน) ซึ่งเป็นจริงหากการโทรสำเร็จโดยไม่มีข้อผิดพลาดในกรณีดังกล่าว pcall() จะคืนผลลัพธ์ทั้งหมดจากการโทรหลังจากผลลัพธ์ครั้งแรกนี้ในกรณีที่เกิดข้อผิดพลาด pcall() จะส่งคืนค่าเท็จพร้อมข้อความข้อผิดพลาด
พารามิเตอร์
ส่งค่ากลับ
รับจํานวนอาร์กิวเมนต์ใดก็ได้ และพิมพ์มูลค่าของพวกเขาให้กับออกprint ไม่ได้มีไว้สำหรับการแสดงผลที่รูปแบบ แต่เพียงเป็นวิธีที่รวดเร็วในการแสดงมูลค่า โดยปกติเพื่อการแก้ไขข้อผิดพลาดสำหรับการออกแบบรูปแบบใช้ string.format()บน Roblox, print ไม่ได้เรียก tostring แต่เมทาเมธอด __tostring ยังคงยิงถ้าตารางมีหนึ่ง
พารามิเตอร์
จํานวนอาร์กิวเมนต์ที่จะถูกเผยแพร่ใดๆ
ส่งค่ากลับ
rawget
รับค่าจริงของ table[index] โดยไม่ต้องเรียกใช้ metamethods ใดๆ
พารามิเตอร์
ตารางที่จะอ้างอิง
ดัชนีที่จะได้รับจาก t .
ส่งค่ากลับ
require
ดำเนินการตามที่จัดหา ModuleScript และส่งคืนสิ่งที่ ModuleScript ส่งกลับ (โดยปกติเป็นตารางหรือฟังก์ชัน)หาก ModuleScript ยังไม่ได้รัน จะถูกดำเนินการ
หากให้เส้นทางสตริงแทน จะถูกแก้ไขครั้งแรกเป็น ModuleScript เมื่อเทียบกับสคริปที่เรียก require() ซึ่งจำลองการจัดเรียงความหมายแบบ Unix ของการแสดงออก Luau's require()ตัวอย่างเช่น แต่ละคู่ของ require() คำสั่งในตัวอย่างด้านล่างมีการโทรสองครั้งที่เทียบเท่าได้
-- "./" เทียบเท่ากับ script.Parentrequire(script.Parent.ModuleScript)require("./ModuleScript")-- "../" เทียบเท่ากับ script.Parent.Parentrequire(script.Parent.Parent.ModuleScript)require("../ModuleScript")
โดยเฉพาะอย่างยิ่งความหมายของการแก้ไขของ require-by-string มีดังนี้:
- เส้นทางสตริงต้องเริ่มด้วย ./ หรือ ../ ซึ่ง ./ เท่ากับ script.Parent และ ../ เท่ากับ script.Parent.Parent
- หากเส้นทางที่แก้ไขชี้ไปที่ ที่ไม่ใช่ จะพยายามค้นหา ที่มีชื่อว่า หรือ เป็นพ่อแม่ของมันและใช้แทนหากมันมีอยู่
- หาก ModuleScript ที่ต้องการไม่ปรากฏในเวลาที่ require() ถูกเรียก การโทรจะล้มเหลวและโยนข้อผิดพลาดคำอื่นๆ คือต้องการโดยสตริงไม่บล็อก: มันไม่ได้รอโดยนัยว่าจะมี ModuleScript ถูกสร้างขึ้น
เมื่อวัตถุการคืนถูกสร้างโดยการเรียกเริ่มต้น ครั้งแรก ของการเรียก ในอนาคต คำขอสำหรับเดียวกัน (ในด้านเดียวกับขอบเขตไคลเอนต์-เซิร์ฟเวอร์) จะไม่รันโค้ดอีกครั้งแทนที่จะให้การอ้างอิงถึง เดียวกัน วัตถุที่สร้างโดยการเรียกเริ่มต้น จะถูกจัดหาพฤติกรรมนี้ช่วยให้สามารถแบ่งปันค่าระหว่างสคริปต์ต่างๆ ได้ เนื่องจากการโทรหลายครั้ง require() จากสคริปต์ต่างๆ จะอ้างอิงถึงวัตถุที่ส่งคืนเดียวกันหากวัตถุที่ส่งคืนเป็นตาราง ค่าใดๆ ที่จัดเก็บไว้ภายในตารางจะถูกแชร์และเข้าถึงได้โดยสคริปต์ใดๆ ที่ต้องการ ModuleScript
ตามที่ระบุไว้ข้างต้น พฤติกรรม "การแบ่งปันวัตถุ" ไม่ข้ามขอบเขตไคลเอนต์-เซิร์ฟเวอร์ซึ่งหมายความว่าหาก เป็นที่เข้าถึงได้ทั้งสำหรับไคลเอนต์ และเซิร์ฟเวอร์ (เช่นโดยถูกวางไว้ใน ) และ ถูกเรียกจากทั้ง และ ด้วยเช่นกัน โค้ดใน จะถูกดำเนินการสองครั้ง และ จะได้รับวัตถุการคืนที่แตกต่างจากที่ได้รับโดย จากที่ได้รับโดย Errors: No errors found.
โปรดทราบว่าหาก ModuleScript ผู้ใช้ต้องการที่จะเรียกใช้มีการอัปโหลดไปยัง Roblox (โดยชื่อตัวแทนของตัวอย่างเป็น MainModule ) สามารถโหลดได้โดยใช้ฟังก์ชัน require() บน ID ทรัพยากรของ ModuleScript แต่เฉพาะบนเซิร์ฟเวอร์เท่านั้น
พารามิเตอร์
The ModuleScript ที่จะถูกดำเนินการเพื่อดึงค่ากลับที่มันให้หรือการอ้างอิงถึงหนึ่ง (เส้นทางสตริงหรือรหัสทรัพยากร)
ส่งค่ากลับ
สิ่งที่กลับมา ModuleScript (โดยปกติเป็นตารางหรือฟังก์ชัน)
select
คืนอาร์กิวเมนต์ทั้งหมดหลังจากหมายเลขอาร์กิวเมนต์ index หากเป็นลบ จะกลับจากจุดสิ้นสุดของรายการอาร์กิวเมนต์
print(select(2, "A", "B", "C")) --> B Cprint(select(-1, "A", "B", "C")) --> C
หากอาร์กิวเมนต์ index ถูกตั้งค่าเป็น "#" จำนวนอาร์กิวเมนต์ที่ถูกส่งหลังจากการคืนจะเป็นจำนวน
print(select("#", "A", "B", "C")) --> 3
พารามิเตอร์
ดัชนีของอาร์กิวเมนต์ที่จะคืนอาร์กิวเมนต์ทั้งหมดหลังจากใน argsหากตั้งค่าเป็น "#" จำนวนของอาร์กิวเมนต์ที่ถูกส่งหลังจากส่งคืน
tuple ของอาร์กิวเมนต์
ส่งค่ากลับ
setmetatable
ตั้งค่า metatable สำหรับโต๊ะที่กำหนด t เป็น newMetaหาก newMeta เป็น nil ตารางข้อมูลของ t จะถูกลบในที่สุดฟังก์ชันนี้จะคืนตาราง t ซึ่งถูกส่งให้กับมันหาก มีตารางที่มี วิธีการเรียกเก็บที่กำหนดไว้แล้ว การเรียกใช้นี้จะสร้างข้อผิดพลาด
local meta = {__metatable = "protected"}local t = {}setmetatable(t, meta) -- นี้ตั้งค่า metatable ของ t-- ตอนนี้เรามีตาราง t ที่มี metatable หากเราพยายามที่จะเปลี่ยนมัน...setmetatable(t, {}) --> Error: cannot change a protected metatable
พารามิเตอร์
ตารางที่จะตั้งค่า metatable ของ
หาก nil , metatable ของตารางที่กำหนด t จะถูกลบออก มิฉะนั้น metatable ที่ตั้งไว้สำหรับตารางที่กำหนด t
ส่งค่ากลับ
tonumber
พยายามแปลง arg เป็นตัวเลขที่มีฐานที่กำหนดเพื่อแสดงค่าภายในหากไม่สามารถแปลงได้ ฟังก์ชันนี้จะคืน nil
ฐานอาจเป็นตัวเลขใดๆ ระหว่าง 2 และ 36 รวมถึงในฐานที่สูงกว่า 10 ตัวอักษร 'A' (ในรูปแบบทั้งบนหรือล่าง) แทนที่ 10, 'B' แทนที่ 11 และอื่นๆ ด้วย 'Z' แทนที่ 35ในฐานะ 10 (ค่าเริ่มต้น) ตัวเลขอาจมีส่วนทศนิยมและส่วนทศนิยมตัวเลขที่เลือกได้ในฐานอื่น ๆ เฉพาะตัวเลขไม่ลงนามจะได้รับการยอมรับ
หากสตริงเริ่มต้นด้วย 0x และฐานไม่ได้รับการจัดเตรียม 0x จะถูกตัดและฐานถือว่าเป็น 16 หรือหกเหลี่ยม
print(tonumber("1337")) --> 1337 (เชื่อว่าฐาน 10, ตัวเลข)print(tonumber("1.25")) --> 1.25 (ฐาน 10 อาจมีส่วนทศนิยม)print(tonumber("3e2")) --> 300 (ฐาน 10 อาจมีส่วนเอกซ์โปเนนต์ 3 × 10 ^ 2)print(tonumber("25", 8)) --> 21 (ฐาน 8, แปด)print(tonumber("0x100")) --> 256 (เชื่อว่าฐาน 16, หกตัวเลข)print(tonumber("roblox")) --> nil (ไม่ได้เรียกข้อผิดพลาด)-- เคล็ดลับ: ใช้กับการอ้างอิงถ้าคุณต้องการหมายเลขที่ไม่สามารถแปลงได้เพื่อเพิ่มข้อผิดพลาดprint(assert(tonumber("roblox"))) --> Error: assertion failed
พารามิเตอร์
วัตถุที่จะแปลงเป็นตัวเลข
ฐานตัวเลขที่จะแปลง arg เป็น
ส่งค่ากลับ
tostring
รับอาร์กิวเมนต์ของประเภทใดก็ได้และแปลงเป็นสตริงในรูปแบบที่เหมาะสมสำหรับการควบคุมอย่างเต็มรูปแบบของวิธีการแปลงตัวเลขให้ใช้ string.formatหาก metatable ของ e มี metamethod __tostring แล้วจะถูกเรียกด้วย e ผลการค้นหา
local isRobloxCool = true-- แปลง boolean เป็นสตริงแล้วรวมเข้าด้วยกัน:print("Roblox is cool: " .. tostring(isRobloxCool)) --> Roblox is cool: true
พารามิเตอร์
วัตถุที่จะแปลงเป็นสตริง
ส่งค่ากลับ
type
คืนประเภทของอาร์กิวเมนต์เดียวที่มีรหัสเป็นข้อความผลลัพธ์ที่เป็นไปได้ของฟังก์ชันนี้คือ "nil" (สตริงไม่ใช่ค่า nil) "number" , "string" , "boolean" , "table" , "vector" , "function" , "thread" , "userdata" และ "buffer" .พริมิติ buffer และ vector เป็นการเพิ่มจาก Luau ไม่ใช่จาก Lua
พารามิเตอร์
วัตถุที่จะส่งคืนประเภท
ส่งค่ากลับ
unpack
คืนองค์ประกอบจากตารางที่กำหนดโดยค่าเริ่มต้น i คือ 1 และ j คือความยาวของ list ตามที่กำหนดโดยตัวประกอบความยาว
พารามิเตอร์
ส่งค่ากลับ
xpcall
ฟังก์ชันนี้คล้ายกับ pcall() ยกเว้นว่าคุณสามารถตั้งค่าตัวจัดการข้อผิดพลาดใหม่ได้
xpcall() เรียกฟังก์ชัน f ในโหมดป้องกันโดยใช้ err เป็นตัวจัดการข้อผิดพลาดและส่งรายการของอาร์กิวเมนต์ข้อผิดพลาดใดๆ ภายใน f จะไม่แพร่กระจาย; แทนที่, xpcall() จะจับข้อผิดพลาด, เรียกฟังก์ชัน err ด้วยวัตถุข้อผิดพลาดเดิม, และส่งรหัสสถานะกลับผลลัพธ์แรกคือรหัสสถานะ (เป็นบูลีน) ซึ่งเป็นจริงหากการโทรสำเร็จโดยไม่มีข้อผิดพลาดในกรณีนี้ xpcall() ยังคืนผลลัพธ์ทั้งหมดจากการโทรหลังจากผลลัพธ์แรกนี้ในกรณีที่เกิดข้อผิดพลาด xpcall() จะส่งคืนค่าเท็จบวกกับผลลัพธ์จาก err
ไม่เหมือนกับ pcall() , ฟังก์ชัน err จะเก็บบันทึกการติดตามของฟังก์ชัน f ซึ่งสามารถตรวจสอบได้โดยใช้ debug.info() หรือ debug.traceback()
พารามิเตอร์
ส่งค่ากลับ
คุณสมบัติ
_G
ตารางที่แชร์ระหว่างสคริปทั้งหมดของระดับบริบทเดียวกัน
_VERSION
ตัวแปรระดับโลก (ไม่ใช่ฟังก์ชัน) ที่เก็บสตริงที่มีเวอร์ชันตัวแปลปัจจุบัน