ماژولها و 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 | متد کلاس |
این مبحث بخشی از دوره آموزش کامل روبی است.