0Pricing
Ruby Academy · درس

تعريف Modules

مساحات الأسماء والدوال

تعريف Modules درس مجاني في Ruby Academy على CoddyKit. هذا هو الدرس 1 من أصل 4. يمكنك قراءة الدرس كاملاً أدناه مجاناً — ثم تمرن عليه مباشرة في المتصفح باستخدام محرر أكواد مدمج ومدرس ذكاء اصطناعي متاح 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")

الأسئلة الشائعة

هل درس «تعريف Modules» مجاني؟

نعم — نص درس «تعريف Modules» كامل متاح مجاناً هنا على الويب. لتمرينه بشكل تفاعلي (محرر أكواد مدمج ومدرس ذكاء اصطناعي متاح 24/7) وفتح باقي دورة Ruby Academy، انتقل إلى CoddyKit PRO. تتضمن دورة Ruby Academy 4 دروس في المجموع.

ماذا ستتعلم في «تعريف Modules»؟

مساحات الأسماء والدوال تتمرن على Ruby Academy مع أكواد عملية تشغلها مباشرة في المتصفح، ومدرس ذكاء اصطناعي متاح 24/7 يجيب على أسئلتك أثناء عملك.

هل أحتاج إلى خبرة سابقة لأبدأ Ruby Academy؟

لا تُشترط خبرة سابقة. Ruby Academy على CoddyKit منظم للمبتدئين حتى المتقدمين، لذا يمكنك البدء من هنا أو من البداية والتقدم بسرعتك الخاصة. هذا هو الدرس 1 من أصل 4.

كم من الوقت يستغرق درس «تعريف Modules»؟

معظم دروس CoddyKit تستغرق حوالي 5–10 دقائق. كل منها موجز وتفاعلي، لذا تحرز تقدماً مستمراً وتستأنف من حيث توقفت عبر الويب والتطبيق.

هل يمكنني كتابة وتشغيل أكواد في درس Ruby Academy هذا؟

نعم. كل درس في Ruby Academy يتضمن محرر أكواد مدمج، لذا تكتب وتشغل أكواداً حقيقية مباشرة في متصفحك وتحصل على تعليقات فورية من الذكاء الاصطناعي — بدون إعداد محلي.

جميع الدروس في هذه الدورة

  1. تعريف Modules
  2. include وextend
  3. Comparable وEnumerable
  4. prepend وحلّ الدوال
← العودة إلى Ruby Academy