0Pricing
Ruby Academy · บทเรียน

การกำหนดมอดูล

เนมสเปซและเมธอด

การกำหนดมอดูล เป็นบทเรียน 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.name

module_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 ในทันที — ไม่ต้องติดตั้งในเครื่องของคุณ

บทเรียนทั้งหมดในหลักสูตรนี้

  1. การกำหนดมอดูล
  2. include และ extend
  3. Comparable และ Enumerable
  4. prepend และการค้นหาเมธอด
← กลับไปที่ Ruby Academy