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