0Pricing
Kotlin Academy · درس

إنشاء Sequences

من المجموعات والمولّدات

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

إنشاء التسلسلات

توجد عدة طرق لإنشاء Sequence: من المجموعات الموجودة، أو من العناصر، أو باستخدام دالة مولِّدة، أو باستخدام باني. يغطي هذا الدرس كل طريقة منها.

من مجموعة باستخدام asSequence

الطريقة الأكثر شيوعًا هي استدعاء asSequence() على مجموعة موجودة لمعالجتها بشكل كسول.

fun main() {
    val seq = listOf(1, 2, 3, 4).asSequence()
    val result = seq.map { it * 2 }.toList()
    println(result)
}

من العناصر باستخدام sequenceOf

تنشئ sequenceOf تسلسلًا مباشرةً من مجموعة ثابتة من القيم.

fun main() {
    val seq = sequenceOf("a", "b", "c")
    seq.forEach { println(it) }
}

التسلسلات اللانهائية باستخدام generateSequence

تنشئ generateSequence تسلسلًا (قد يكون لانهائيًا) من بذرة ودالة تحسب العنصر التالي. اقرنوها بـ take لتحديد حجمه.

fun main() {
    val powers = generateSequence(1) { it * 2 }
    val first5 = powers.take(5).toList()
    println(first5)
}

إيقاف generateSequence

إذا أعادت دالة العنصر التالي null، ينتهي التسلسل. ويتيح لكم ذلك التوليد حتى يتحقق شرط معيّن.

fun main() {
    val countdown = generateSequence(5) { if (it > 1) it - 1 else null }
    println(countdown.toList())
}

‏generateSequence دون بذرة

يمكنكم تمرير دالة lambda واحدة تُرجع القيمة التالية أو null. ويفيد ذلك في قراءة تدفقات الإدخال بشكل كسول.

fun main() {
    var n = 0
    val seq = generateSequence { if (n < 3) n++ else null }
    println(seq.toList())
}

باني sequence

يتيح لكم الباني sequence { } إنتاج العناصر بأسلوب إجرائي باستخدام yield (قيمة واحدة) وyieldAll (عدة قيم).

fun main() {
    val seq = sequence {
        yield(1)
        yield(2)
        yieldAll(listOf(3, 4))
    }
    println(seq.toList())
}

التوليد الكسول

يكون الباني كسولًا أيضًا: فلا يُنفّذ الكود بين استدعاءات yield إلا عند طلب العناصر. وبدمجه مع take، يمكنكم وصف مولدات لانهائية بأمان.

fun main() {
    val naturals = sequence {
        var i = 1
        while (true) {
            yield(i)
            i++
        }
    }
    println(naturals.take(4).toList())
}

أعداد فيبوناتشي باستخدام generateSequence

مثال كلاسيكي: ولّدوا أعداد فيبوناتشي بشكل كسول باستخدام Pair بوصفه الحالة.

fun main() {
    val fib = generateSequence(Pair(0, 1)) { Pair(it.second, it.first + it.second) }
        .map { it.first }
    println(fib.take(8).toList())
}

التحويل مجددًا إلى مجموعة

لا يصبح التسلسل مجموعة ملموسة إلا عند استدعاء عملية نهائية مثل toList() أو toSet() أو toMutableList().

fun main() {
    val set = sequenceOf(1, 2, 2, 3).toSet()
    println(set)
}

اختيار طريقة الإنشاء

استخدموا asSequence() للبيانات الموجودة، وsequenceOf للقيم الثابتة، وgenerateSequence للسلاسل المحسوبة، وباني sequence { } للتوليد الإجرائي المخصّص.

تحقق سريع

كيف تعرف generateSequence متى تتوقف؟

مراجعة

يمكنكم إنشاء التسلسلات باستخدام asSequence() وsequenceOf وgenerateSequence (بذرة وعنصر تالٍ، وينتهي عند null)، وباني sequence { } مع yield/yieldAll. بعد ذلك سترون كيف تتجنب العمليات الكسولة إنشاء القوائم الوسيطة.

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

هل درس «إنشاء Sequences» مجاني؟

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

ماذا ستتعلم في «إنشاء Sequences»؟

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

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

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

كم من الوقت يستغرق درس «إنشاء Sequences»؟

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

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

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

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

  1. لماذا نستخدم Sequences
  2. إنشاء Sequences
  3. العمليات الكسولة
  4. Sequences مقابل Collections
← العودة إلى Kotlin Academy