Menu
Coddy logo textTech
flag Ar iconالعربيةdown icon

تحويل الأنواع

جزء من قسم الأساسيات في رحلة Swift على Coddy — الدرس 34 من 86.

بما أن readLine() تعيد String?، فستحتاج غالباً إلى تحويل تلك السلسلة النصية إلى رقم لإجراء العمليات الحسابية. تتطلب Swift تحويل النوع (type conversion) الصريح — فهي لن تقوم تلقائياً بتحويل السلسلة النصية إلى عدد صحيح (integer) أو عدد عشري (double).

لتحويل سلسلة نصية إلى عدد صحيح، استخدم المُهيئ Int(). ولأن عملية التحويل قد تفشل (فقد تحتوي السلسلة النصية على أحرف بدلاً من أرقام)، فإنها تُرجع قيمة اختيارية (optional):

let input = "42"
if let number = Int(input) {
    print(number + 10) // المخرجات: 52
}

للأرقام العشرية، استخدم Double():

let priceString = "19.99"
if let price = Double(priceString) {
    print(price * 2) // الناتج: 39.98
}

هذا مفيد بشكل خاص عند دمج readLine() مع العمليات الرقمية. يمكنك ربط عملية فك التغليف (unwrapping) معاً:

if let input = readLine(), let age = Int(input) {
    print("Next year you'll be \(age + 1)")
}

الفاصلة في جملة if let تعني أن كلا الشرطين يجب أن يتحققا — يجب أن يكون المدخل موجوداً، ويجب أن يكون قابلاً للتحويل إلى عدد صحيح.

challenge icon

التحدي

سهل

اقرأ مدخلين: رقم عشري كسلسلة نصية وعدد صحيح كسلسلة نصية. قم بتحويلهما إلى أنواعهما الرقمية المناسبة واحسب حاصل ضربهما.

ستتلقى المدخلات التالية:

  • السطر الأول: رقم عشري (على سبيل المثال، "3.5")
  • السطر الثاني: عدد صحيح (على سبيل المثال، "4")

استخدم readLine() لقراءة كلا المدخلين. قم بتحويل المدخل الأول إلى Double والثاني إلى Int. ثم اضربهم معاً واطبع النتيجة.

استخدم if let مع ربط اختياري متسلسل (chained optional binding) لفك تغليف (unwrap) كل من المدخل والقيمة المحولة بأمان.

اطبع: حاصل ضرب الرقمين كـ Double

ورقة مرجعية

تتطلب لغة Swift تحويلاً صريحاً للأنواع بين النصوص والأرقام.

لتحويل نص إلى عدد صحيح، استخدم Int(). وهي تعيد قيمة اختيارية (optional) لأن التحويل قد يفشل:

let input = "42"
if let number = Int(input) {
    print(number + 10) // Output: 52
}

لتحويل نص إلى رقم عشري، استخدم Double():

let priceString = "19.99"
if let price = Double(priceString) {
    print(price * 2) // Output: 39.98
}

يمكنك ربط فك التغليف الاختياري (optional unwrapping) مع readLine() باستخدام الفاصلة في if let. يجب أن ينجح كلا الشرطين:

if let input = readLine(), let age = Int(input) {
    print("Next year you'll be \(age + 1)")
}

جرّب بنفسك

// قراءة الرقم العشري كسلسلة نصية
if let decimalString = readLine() {
    // قراءة الرقم الصحيح كسلسلة نصية
    if let intString = readLine() {
        // TODO: اكتب كودك أدناه
        // قم بتحويل decimalString إلى Double و intString إلى Int باستخدام if let
        // ثم احسب واطبع ناتج ضربهما
        
    }
}
quiz iconاختبر نفسك

يتضمن هذا الدرس اختبارًا قصيرًا. ابدأ الدرس للإجابة عليه وتتبّع تقدمك.

جميع دروس الأساسيات