تعريف 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.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")الأسئلة الشائعة
هل درس «تعريف 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 يتضمن محرر أكواد مدمج، لذا تكتب وتشغل أكواداً حقيقية مباشرة في متصفحك وتحصل على تعليقات فورية من الذكاء الاصطناعي — بدون إعداد محلي.