0Pricing
Ruby Academy · درس

Lambdas

Procs ذات عدد معاملات صارم

Lambdas درس مجاني في Ruby Academy على CoddyKit. هذا هو الدرس 3 من أصل 4. يمكنك قراءة الدرس كاملاً أدناه مجاناً — ثم تمرن عليه مباشرة في المتصفح باستخدام محرر أكواد مدمج ومدرس ذكاء اصطناعي متاح 24/7. هذا الدرس جزء من مسار التعلم في Ruby Academy، وتقدمك يتزامن عبر الويب وتطبيق CoddyKit. تتضمن دورة Ruby Academy 4 دروس في المجموع.

Procs ذات عدد وسائط صارم

تُعد lambda نوعًا خاصًا من Proc يتصرّف مثل الطريقة العادية بدرجة أكبر: إذ يتحقّق من عدد الوسائط ويتعامل مع return بصورة طبيعية. استخدموها عندما تريدون سلوكًا متوقّعًا شبيهًا بسلوك الطرائق.

square = lambda { |x| x * x }
puts square.call(6)

Lambda ذات السهم

تُعد صيغة السهم ->، المعروفة بلقب stabby lambda، الطريقة الأكثر شيوعًا لكتابة lambdas. وتوضع المعاملات بين قوسين.

add = ->(a, b) { a + b }
puts add.call(4, 5)

استدعاء Lambdas

تدعم lambdas أساليب الاستدعاء نفسها التي تدعمها Procs: .call و.() و[ ].

triple = ->(x) { x * 3 }
puts triple.call(2)
puts triple.(2)
puts triple[2]

التحقّق الصارم من الوسائط

على خلاف Proc، ترفع lambda الخطأ ArgumentError إذا مرّرتم عددًا غير صحيح من الوسائط. وهذا يساعد على اكتشاف الأخطاء مبكرًا.

greet = ->(name) { "Hi #{name}" }
puts greet.call("Sam")
begin
  greet.call
rescue ArgumentError => e
  puts "Error: #{e.message}"
end

يبقى return محليًا

تُخرج عبارة return داخل lambda التنفيذ من lambda وحدها، ثم يستمر التنفيذ. وهذا يطابق سلوك الطرائق.

def demo
  l = -> { return 10 }
  l.call
  20  # this runs
end
puts demo

التحقّق من كون الكائن Lambda

كل من Procs وlambdas هو مثيل من Proc. استخدموا lambda? للتمييز بينهما.

l = ->(x) { x }
pr = proc { |x| x }
puts l.lambda?
puts pr.lambda?

Lambdas بلا معاملات

احذفوا الأقواس عندما لا تأخذ lambda أي معاملات.

now = -> { Time.now.year }
puts "Year: #{now.call}"

Lambdas متعددة الأسطر

يمكن أن تمتد lambdas على عدة أسطر. ويكون التعبير الأخير هو القيمة المُعادة.

classify = ->(n) {
  return "zero" if n.zero?
  n.positive? ? "positive" : "negative"
}
puts classify.call(0)
puts classify.call(-3)

تمرير Lambdas إلى الطرائق

مثل Procs، تتحوّل lambdas إلى كتل باستخدام &، ولذلك يمكن استخدامها مع map وselect وما شابهما.

doubler = ->(n) { n * 2 }
p [1, 2, 3].map(&doubler)

Lambdas كقيم مُعادة

يمكن للطريقة إنشاء lambda وإعادتها، مما يتيح لكم إنشاء دوال متخصّصة أثناء التشغيل.

def multiplier(by)
  ->(n) { n * by }
end
times10 = multiplier(10)
puts times10.call(5)

جمع المفاهيم

Lambdas هي Procs صارمة شبيهة بالطرائق:

  • اكتبوها باستخدام lambda { } أو ->(args) { }.
  • تفرض عدد الوسائط وتحصر return داخلها.
  • استخدموها عندما تكون الصحة مهمة أو عندما تنشئون دوال لإعادتها.
is_even = ->(n) { n.even? }
p [1, 2, 3, 4, 5, 6].select(&is_even)

اختبار سريع

اختبروا فهمكم لـ lambdas.

مراجعة

تعلّمتم lambdas:

  • Lambda هي Proc صارم؛ اكتبوها باستخدام ->.
  • تفرض عدد الوسائط.
  • تُخرج return التنفيذ من lambda وحدها.
  • تميّز lambda? بينها وبين Proc العادي.
area = ->(w, h) { w * h }
puts area.call(3, 4)

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

هل درس «Lambdas» مجاني؟

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

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

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

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

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

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

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

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

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

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

  1. مراجعة Blocks
  2. Procs
  3. Lambdas
  4. Closures والنطاق
← العودة إلى Ruby Academy