ModuleScript
*เนื้อหานี้แปลโดยใช้ AI (เวอร์ชัน Beta) และอาจมีข้อผิดพลาด หากต้องการดูหน้านี้เป็นภาษาอังกฤษ ให้คลิกที่นี่
A ModuleScript เป็นประเภทสคริปต์ที่ส่งคืนค่าเดียวโดยการเรียก Global.LuaGlobals.require()``Class.ModuleScript|ModuleScripts ทำงานเพียงครั้งเดียวต่อสภาพแวดล้อม Luau และส่งค่าเดียวกันสำหรับการโทรต่อไปที่ require()
ModuleScripts เป็นวัตถุที่จำเป็นสำหรับการปฏิบัติตามหลักการ "อย่าทำซ้ำตัวเอง" (DRY) ทำให้คุณสามารถเขียนฟังก์ชันเพียงครั้งเดียวและใช้งานได้ทุกที่การมีสำเนาหลายตัวของฟังก์ชันเป็นปัญหาเมื่อต้องเปลี่ยนพฤติกรรมของพวกเขาดังนั้นคุณควรกำหนดฟังก์ชันหรือกลุ่มฟังก์ชันใน และมีการเรียก และ ในโมดูลเหล่านั้น
เป็นสิ่งสำคัญที่ต้องรู้ว่าค่าการ返回จาก ModuleScripts จะเป็นอิสระต่อ Scripts และ LocalScripts และสภาพแวดล้อมอื่นๆ เช่น แถบคำสั่งการใช้ require() บน ModuleScript ใน LocalScript จะรันโค้ดบนไคลเอนต์แม้ว่า Script จะทำเช่นนั้นแล้วบนเซิร์ฟเวอร์ดังนั้นโปรดระวังหากคุณกำลังใช้ ModuleScript บนไคลเอนต์และเซิร์ฟเวอร์ในเวลาเดียวกันหรือกำลังแก้ไขภายใน Studio
โปรดทราบว่าการโทรครั้งแรกไปที่ require() จะไม่ให้ผล (หยุด) เว้นแต่ว่า ModuleScript จะให้ผล (เรียก task.wait() ตัวอย่างเช่น) ในกรณีนี้กระทู้ปัจจุบันที่เรียก require() จะให้ผลจนกว่า ModuleScript จะกลับมาเป็นค่าหาก กําลังพยายาม อีก ที่ในทางกลับกันพยายาม มันจะ แขวนและไม่หยุดเลย (การโทรจังหวะทางไซเคิลไม่สร้างข้อผิดพลาด)ตรวจสอบการพึ่งพาโมดูลของคุณในโครงการขนาดใหญ่!
หาก ModuleScript ถูกอัปโหลดไปยัง Roblox และโมดูลรากมีชื่อตั้งค่าเป็น MainModule ก็สามารถอัปโหลดเป็นโมเดลและต้องใช้ require() ด้วย ID สินทรัพย์ของโมเดลจากนั้นสามารถโหลดลงในประสบการณ์ของคุณได้ แม้ว่าโลจิกจะทำงานได้เฉพาะในเซิร์ฟเวอร์และจะเกิดข้อผิดพลาดในไคลเอนต์หากผู้ใช้รายอื่นต้องการใช้โมดูล จะต้องเป็นสาธารณะ
ตัวอย่างโค้ด
ตัวอย่างโค้ดเริ่มต้นด้วยการสร้างตัวแปรท้องถิ่นที่มีตารางว่างเปล่าจากนั้นก็เติมตารางด้วยฟังก์ชันชั่วคราวสองฟังก์ชันแล้วสุดท้ายก็ส่งคืนตารางการใช้รหัสนี้ใน ModuleScript จะทำให้ตาราง my_functions ที่มีอยู่ (และดังนั้นฟังก์ชัน ตาราง หรือค่าอื่นๆ ภายในนั้น) สามารถใช้งานได้กับสคริปต์ สคริปต์ท้องถิ่น หรือสคริปต์โมดูลอื่นๆ
-- ตารางเก็บหลายค่าในตัวแปรเดียว
local MyFunctions = {}
-- เพิ่มฟังก์ชันไม่กี่ไปยังตาราง
function MyFunctions.foo()
print("Foo!")
end
function MyFunctions.bar()
print("Bar!")
end
-- ModuleScripts ต้องส่งคืนค่าเดียวอย่างแน่นอน
return MyFunctions
This code sample shows how to use the require function on a ModuleScript, then use the value that it returned. See the "Simple ModuleScript Example" for the code to go with this sample.
-- The require function is provided a ModuleScript, then runs
-- the code, waiting until it returns a singular value.
local MyFunctions = require(script.Parent.MyFunctions)
-- These are some dummy functions defined in another code sample
MyFunctions.foo()
MyFunctions.bar()
สรุป
คุณสมบัติ
รหัสที่จะถูกดำเนินการ
คุณสมบัติ
Source
รหัสที่จะถูกดำเนินการ
หากคุณต้องการอ่านหรือแก้ไขสคริปต์ที่ผู้ใช้เปิดอยู่ พิจารณาใช้ ScriptEditorService เพื่อโต้ตอบกับเครื่องมือแก้ไขสคริปต์แทน