ماژول‌ها و Mixins در روبی

تعریف ماژول، include، extend و الگوی Mixin در روبی

ماژول چیست؟

ماژول (Module) مثل کلاس است اما نمی‌توان از آن شی ساخت. ماژول‌ها برای گروه‌بندی متدها و اشتراک‌گذاری کد (Mixin) استفاده می‌شوند.

تعریف ماژول

module Greetable
  def greet
    "سلام، من #{name} هستم!"
  end
end

include — Mixin به عنوان متد نمونه

module Walkable
  def walk
    "#{self.class} در حال راه رفتن است"
  end
end

class Person
  include Walkable
  attr_reader :name

  def initialize(name)
    @name = name
  end
end

p = Person.new("علی")
puts p.walk  # => Person در حال راه رفتن است

extend — Mixin به عنوان متد کلاس

module Countable
  def count
    "تعداد: #{self.length}"
  end
end

class MyArray < Array
  extend Countable
end

ماژول برای namespace

module MathUtils
  PI = 3.14159

  def self.square(n)
    n ** 2
  end

  def self.cube(n)
    n ** 3
  end
end

puts MathUtils::PI          # => 3.14159
puts MathUtils.square(5)    # => 25
puts MathUtils.cube(3)      # => 27

خلاصه

مفهومسینتکس
تعریفmodule Name...end
متد ماژولdef self.method
ثابتModule::CONST
includeمتد نمونه
extendمتد کلاس

این مبحث بخشی از دوره آموزش کامل روبی است.

ابزارهای مرتبط