0Pricing
Kotlin Academy · درس

النطاقات المخصصة ونطاقات Char

ما يتجاوز الأعداد الصحيحة

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

ما بعد الأعداد الصحيحة

لا تقتصر النطاقات على Int. يدعم Kotlin نطاقات المحارف وأنواعًا أخرى قابلة للمقارنة.

يستكشف هذا الدرس نطاقات المحارف وكيف يمكن للأنواع المخصصة المشاركة باستخدام rangeTo.

مراجعة نطاقات المحارف

للمحارف ترتيب محدد، لذا فإن 'a'..'z' نطاق صالح.

يمكنك التكرار عليه والتحقق من الانتماء إليه وغير ذلك.

fun main() {
    for (c in 'a'..'f') print(c)
    println()
    println('q' in 'a'..'z')
}

التحقق من صحة المحارف

تجعل نطاقات المحارف التحقق من صحة الإدخال واضحًا، مثل التحقق من كون القيمة رقمًا أو حرفًا.

fun isDigit(c: Char): Boolean = c in '0'..'9'

fun main() {
    println(isDigit('7'))
    println(isDigit('x'))
}

عدّ الأحرف

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

fun main() {
    val alphabet = ('a'..'z').toList()
    println(alphabet.size)
    println(alphabet.first())
    println(alphabet.last())
}

نطاقات Long

تعمل النطاقات مع Long أيضًا، وهو أمر مفيد للامتدادات العددية الكبيرة.

وتنطبق العوامل نفسها.

fun main() {
    val big = 1L..5L
    println(big.sum())
}

النطاقات القابلة للمقارنة

يمكن لأي نوع Comparable تكوين نطاق باستخدام ..، لكن هذه النطاقات تدعم التحقق من الانتماء فقط، ولا تدعم التكرار.

فعلى سبيل المثال، تتحقق نطاقات String من الترتيب المعجمي.

fun main() {
    val range = "apple".."mango"
    println("cherry" in range)
    println("zebra" in range)
}

لماذا لا يمكن تكرار بعض النطاقات

يحتاج التكرار إلى خطوة محددة. للأعداد الصحيحة والمحارف خطوة معروفة (إضافة 1)، لكن السلاسل النصية والأعداد العشرية لا تملك قيمة تالية واضحة.

لذلك تدعم هذه النطاقات in، لكنها لا تدعم حلقات for.

fun main() {
    val r = 1.0..5.0
    println(2.5 in r)
    // for (x in r) // not allowed for Double
}

الأنواع المخصصة مع rangeTo

يستدعي العامل .. دالة rangeTo. إذا نفذت فئتك Comparable، فستحصل تلقائيًا على إمكانية التحقق من انتماء القيم إلى النطاق.

في هذا المثال، تقارن فئة بسيطة تمثل الإصدار عدديًا.

data class Ver(val n: Int) : Comparable<Ver> {
    override fun compareTo(other: Ver) = n - other.n
}

fun main() {
    val range = Ver(1)..Ver(5)
    println(Ver(3) in range)
    println(Ver(9) in range)
}

العامل وراء الكواليس

كتابة a..b تعادل استدعاء a.rangeTo(b).

وصيغة العامل ليست سوى صياغة ألطف للدالة نفسها.

fun main() {
    val r1 = 1..5
    val r2 = 1.rangeTo(5)
    println(r1.toList() == r2.toList())
}

اختيار النطاق المناسب

إرشادات سريعة:

  • الأرقام والمحارف → يمكن التكرار والتحقق
  • الأعداد العشرية والأنواع المخصصة القابلة للمقارنة → التحقق من الانتماء فقط
  • هل تحتاج إلى خطوة؟ التزم بالتتابعات العددية الصحيحة أو تتابعات المحارف
fun main() {
    println('m' in 'a'..'z')
    println(3.5 in 1.0..4.0)
    println(50 in 1..100)
}

جمع المفاهيم

تتعمم النطاقات على أنواع كثيرة:

  • يمكن التكرار على نطاقات المحارف واستخدامها في التحقق
  • تتعامل نطاقات Long مع الامتدادات الكبيرة
  • تدعم الأنواع القابلة للمقارنة والمخصصة التحقق من الانتماء
  • يُعد .. صياغةً مختصرة لـ rangeTo
fun main() {
    val vowels = "aeiou"
    for (c in 'a'..'z') {
        if (c in vowels) print(c)
    }
    println()
}

اختبار سريع

اختبر مدى فهمك لنطاقات المحارف والنطاقات المخصصة.

مراجعة

لقد تعلمت عن نطاقات المحارف والنطاقات المخصصة:

  • يمكن التكرار على نطاقات المحارف وLong كما في نطاقات Int
  • تدعم الأنواع القابلة للمقارنة التحقق من الانتماء باستخدام ..
  • تتحقق الأنواع غير المتصلة من in، لكن لا يمكن التكرار عليها
  • يُعد .. اختصارًا لـ rangeTo

وبذلك يكتمل مساق النطاقات والتتابعات.

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

هل درس «النطاقات المخصصة ونطاقات Char» مجاني؟

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

ماذا ستتعلم في «النطاقات المخصصة ونطاقات Char»؟

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

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

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

كم من الوقت يستغرق درس «النطاقات المخصصة ونطاقات Char»؟

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

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

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

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

  1. معاملات النطاق
  2. step وdownTo
  3. النطاقات في الحلقات
  4. النطاقات المخصصة ونطاقات Char
← العودة إلى Kotlin Academy