0Pricing
Lua Academy · درس

بروتوكول for العامة

افهم بروتوكول المكرّر ذي القيم الثلاث: دالة المكرّر والحالة ومتغير التحكم

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

آلية عمل for العام

تستدعي عبارة for دالة مكرّر في كل تكرار. وتمرّر إليها حالة ومتغير تحكم، وتتوقف عندما تُرجع الدالة nil.

إرجاع ثلاث قيم

for var in iter, state, init do — تفكك Lua هذا إلى: دالة المكرّر iter، والحالة الثابتة state، ومتغير التحكم الابتدائي init.

بروتوكول ipairs

تُرجع ipairs(t) دالة مكرّر عديمة الحالة، والجدول بوصفه حالة، و0 بوصفه متغير تحكم ابتدائيًا. ويُرجع كل استدعاء الفهرس والقيمة التاليين.

for i, v in ipairs({10, 20, 30}) do
  print(i, v)
end

مكرّر مخصص بثلاث قيم

طبّقوا مكرّرًا مخصصًا عديم الحالة بتوفير القيم الثلاث كلها صراحةً.

local function iter(t, i)
  i = i + 1
  local v = t[i]
  if v then return i, v end
end
for i, v in iter, {"a","b","c"}, 0 do
  print(i, v)
end

التبسيط باستخدام إغلاق

لا يحتاج المكرّر المعتمد على إغلاق إلا إلى إرجاع دالة المكرّر (فلا حاجة إلى حالة أو متغير تحكم، إذ يعيشان في القيم العلوية).

local function values(t)
  local i = 0
  return function()
    i = i + 1
    return t[i]
  end
end
for v in values({1,2,3}) do print(v) end

ينهي nil الحلقة

تخرج حلقة for العامة فور إرجاع دالة المكرّر nil بوصفها قيمة الإرجاع الأولى. وهذا هو عقد الإنهاء.

قيم إرجاع متعددة

يمكن للمكرّر إرجاع قيم متعددة، وتُطابق كل قيمة متغيرًا في الحلقة: for k, v in pairs(t).

for k, v in pairs({x=1, y=2}) do
  print(k, v)
end

استخدام وسيط الحالة

يُمرّر وسيط الحالة من دون تغيير إلى كل استدعاء للمكرّر. وبالنسبة إلى المكرّرات عديمة الحالة، يحتفظ هذا الوسيط بكل السياق المطلوب (مثل الجدول نفسه).

استخدام coroutine.wrap كمكرّر

تُرجع coroutine.wrap(fn) دالةً تستأنف التعاونية عند كل استدعاء؛ وتصبح القيم المُنتجة قيم إرجاع، مما يجعلها مناسبة تمامًا لتكون مكرّرًا في for العامة.

local function countdown(n)
  return coroutine.wrap(function()
    for i = n, 1, -1 do coroutine.yield(i) end
  end)
end
for v in countdown(5) do print(v) end

تركيب المكرّرات

يمكن تركيب المكرّرات: لفّ مكرّر داخل آخر لإضافة التصفية أو التحويل.

local function mapped(iter, fn)
  return function()
    local v = iter()
    if v ~= nil then return fn(v) end
  end
end

المكرّرات اللانهائية

يؤدي المكرّر الذي لا يُرجع nil أبدًا إلى إنشاء حلقة لا نهائية. احرصوا دائمًا على توفير شرط إنهاء أو break.

local function naturals()
  local n = 0
  return function() n = n+1; return n end
end
for v in naturals() do
  if v > 5 then break end
  print(v)
end

سؤال عن for العامة

متى تتوقف حلقة for العامة؟

مراجعة: بروتوكول for العامة

تستدعي for العامة دالة مكرّر باستخدام حالة ثابتة ومتغير تحكم. وتتوقف عند nil. وتبسّط الإغلاقات المكرّرات ذات الحالة بترميز الحالة في القيم العلوية.

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

هل درس «بروتوكول for العامة» مجاني؟

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

ماذا ستتعلم في «بروتوكول for العامة»؟

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

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

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

كم من الوقت يستغرق درس «بروتوكول for العامة»؟

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

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

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

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

  1. بروتوكول for العامة
  2. المكرّرات عديمة الحالة
  3. المكرّرات ذات الحالة باستخدام الإغلاقات
  4. المولّدات المعتمدة على البرامج التعاونية
← العودة إلى Lua Academy