การกำหนดมอดูล
เนมสเปซและเมธอด
การกำหนดมอดูล เป็นบทเรียน Ruby Academy ฟรีบน CoddyKit นี่คือบทเรียนที่ 1 จากทั้งหมด 4 บทเรียน คุณสามารถอ่านบทเรียนทั้งหมดด้านล่างฟรี — จากนั้นลองปฏิบัติด้วยตัวคุณเองในเบราว์เซอร์พร้อมตัวแก้ไขโค้ดในตัวและติวเตอร์ AI ตลอด 24/7 บทเรียนนี้เป็นส่วนหนึ่งของเส้นทางการเรียน Ruby Academy และความก้าวหน้าของคุณจะซิงค์ข้ามเว็บและแอป CoddyKit คอร์ส Ruby Academy มีบทเรียนทั้งหมด 4 บทเรียน
เนมสเปซและเมธอด
โมดูล คือที่เก็บเมธอดและค่าคงที่ ซึ่งต่างจากคลาสตรงที่คุณไม่สามารถสร้างอินสแตนซ์ของโมดูลได้ โมดูลมีบทบาทสองอย่าง ได้แก่ การจัดกลุ่มโค้ด (การกำหนดเนมสเปซ) และการแบ่งปันพฤติกรรม (มิกซ์อิน)
module Greeter
def self.hello
"Hello from the module"
end
end
puts Greeter.helloเมธอดของโมดูล
กำหนดเมธอดด้วย self. เพื่อเรียกใช้เมธอดนั้นโดยตรงกับโมดูล เช่นเดียวกับฟังก์ชันอรรถประโยชน์ เมธอดเหล่านี้มักเรียกว่าฟังก์ชันของโมดูล
module MathTools
def self.square(x)
x * x
end
end
puts MathTools.square(7)ค่าคงที่ของโมดูล
โมดูลสามารถเก็บค่าคงที่ได้เช่นกัน เข้าถึงค่าคงที่เหล่านั้นด้วยตัวดำเนินการขอบเขต ::
module Physics
GRAVITY = 9.81
end
puts Physics::GRAVITYการกำหนดเนมสเปซให้คลาส
ห่อคลาสไว้ในโมดูลเพื่อหลีกเลี่ยงชื่อชนกัน ชื่อเต็มจะใช้ ::
module Store
class Item
def initialize(name)
@name = name
end
def to_s
@name
end
end
end
puts Store::Item.new("Book")เหตุผลที่เนมสเปซสำคัญ
ไลบรารีสองแห่งอาจกำหนด Logger เหมือนกัน การกำหนดเนมสเปซช่วยแยกทั้งสองออกจากกัน: Audio::Logger และ Network::Logger จะไม่ชนกัน
module Audio
class Logger
def name; "audio logger"; end
end
end
module Network
class Logger
def name; "network logger"; end
end
end
puts Audio::Logger.new.name
puts Network::Logger.new.namemodule_function
module_function ทำให้เมธอดถัดไปสามารถเรียกใช้ได้ทั้งกับโมดูลโดยตรงและในฐานะเมธอดอินสแตนซ์ส่วนตัวเมื่อถูกนำไปผสม วิธีนี้ช่วยไม่ให้ต้องเขียน self. ซ้ำ
module Calc
module_function
def add(a, b)
a + b
end
end
puts Calc.add(2, 3)การจัดกลุ่มค่าคงที่ที่เกี่ยวข้องกัน
โมดูลเหมาะอย่างยิ่งสำหรับจัดระเบียบค่าการกำหนดค่าที่เกี่ยวข้องกันไว้ภายใต้ชื่อที่ชัดเจนชื่อเดียว
module Color
RED = "#FF0000"
GREEN = "#00FF00"
BLUE = "#0000FF"
end
puts Color::GREENโมดูลซ้อนกัน
โมดูลสามารถซ้อนอยู่ภายในโมดูลอื่นเพื่อจัดระเบียบในระดับที่ลึกขึ้นได้
module App
module Config
VERSION = "1.0"
end
end
puts App::Config::VERSIONการแสดงเนื้อหาของโมดูล
เมธอดสำหรับตรวจสอบโครงสร้างช่วยให้คุณตรวจดูค่าคงที่และเมธอดของโมดูลขณะโปรแกรมกำลังทำงานได้
module Settings
WIDTH = 80
HEIGHT = 24
end
p Settings.constantsโมดูลไม่สามารถสร้างอินสแตนซ์ได้
การใช้ Module.new กับรูปแบบโมดูลที่มีชื่อจะล้มเหลว เนื่องจากโมดูลไม่มีตัวสร้างสำหรับอินสแตนซ์ โมดูลเป็นเนมสเปซและที่เก็บพฤติกรรม ไม่ใช่แม่แบบสำหรับสร้างออบเจ็กต์
module Tools
end
begin
Tools.new
rescue NoMethodError => e
puts "Cannot instantiate: #{e.message}"
endนำทุกอย่างมาประกอบกัน
โมดูลช่วยจัดระเบียบและแบ่งปันโค้ด:
- ใช้
self.methodสำหรับฟังก์ชันของโมดูลที่เรียกใช้ได้ - เก็บค่าคงที่ซึ่งเข้าถึงด้วย
:: - กำหนดเนมสเปซให้คลาสเพื่อป้องกันชื่อชนกัน
- คุณไม่สามารถสร้างอินสแตนซ์ของโมดูลได้
module Geometry
PI = 3.14159
def self.circle_area(r)
PI * r * r
end
end
puts Geometry.circle_area(2)ตรวจความเข้าใจ
ทดสอบความเข้าใจเกี่ยวกับโมดูลของคุณ
ทบทวน
คุณได้เรียนรู้การกำหนดโมดูลดังนี้:
- โมดูลจัดกลุ่มเมธอดและค่าคงที่
self.methodใช้กำหนดฟังก์ชันของโมดูลที่เรียกใช้ได้::ใช้เข้าถึงค่าคงที่และคลาสที่ซ้อนอยู่- การกำหนดเนมสเปซช่วยป้องกันชื่อชนกัน
module Util
def self.shout(s)
s.upcase + "!"
end
end
puts Util.shout("ruby")คำถามที่พบบ่อย
บทเรียน “การกำหนดมอดูล” ฟรีหรือไม่
ใช่ — ข้อความเต็มของ “การกำหนดมอดูล” ฟรีให้อ่านที่นี่บนเว็บ เพื่อปฏิบัติแบบโต้ตอบ (ตัวแก้ไขโค้ดในตัวและติวเตอร์ AI ตลอด 24/7) และปลดล็อคส่วนที่เหลือของคอร์ส Ruby Academy ให้อัปเกรดเป็น CoddyKit PRO คอร์ส Ruby Academy มีบทเรียนทั้งหมด 4 บทเรียน
คุณจะเรียนรู้อะไรในบทเรียน “การกำหนดมอดูล”
เนมสเปซและเมธอด คุณปฏิบัติ Ruby Academy ด้วยโค้ดที่ใช้งานได้จริงที่คุณเรียกใช้โดยตรงในเบราว์เซอร์ และติวเตอร์ AI ตลอด 24/7 ตอบคำถามของคุณขณะที่คุณไปผ่านบทเรียน
คุณต้องมีประสบการณ์ก่อนที่จะเริ่มเรียน Ruby Academy หรือไม่
ไม่จำเป็นต้องมีประสบการณ์มาก่อน Ruby Academy บน CoddyKit ออกแบบมาสำหรับผู้เริ่มต้นไปจนถึงผู้เรียนขั้นสูง คุณสามารถเริ่มต้นที่นี่หรือเริ่มจากตัวแรกและเรียนด้วยความเร็วของคุณเอง นี่คือบทเรียนที่ 1 จากทั้งหมด 4 บทเรียน
บทเรียน “การกำหนดมอดูล” ใช้เวลานานแค่ไหน
บทเรียน CoddyKit ส่วนใหญ่ใช้เวลาประมาณ 5–10 นาที แต่ละบทเรียนจึงสั้นและเป็นแบบโต้ตอบ คุณสามารถก้าวหน้าอย่างต่อเนื่องและกลับมาเรียนต่อจากตรงที่เพิ่งหยุดบนเว็บและแอปได้เลย
ฉันเขียนและรันโค้ดในบทเรียน Ruby Academy นี้ได้ไหม
ได้ บทเรียน Ruby Academy ทุกบทมีตัวแก้ไขโค้ดในตัว คุณจึงเขียนและรันโค้ดจริงได้เลยในเบราว์เซอร์ และได้รับข้อเสนอแนะจาก AI ในทันที — ไม่ต้องติดตั้งในเครื่องของคุณ