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

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

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

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

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

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() مع العمليات الرقمية. يمكنك ربط عمليات فك التغليف معًا:

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

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

challenge icon

التحدي

سهل

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

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

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

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

استخدم if let مع الربط الاختياري المتسلسل لإلغاء التفاف كل من المدخل والقيمة المحوّلة بأمان.

اطبع: حاصل ضرب العددين باعتباره Double

جرّب بنفسك

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

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

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

تدرّب بنفسك: Playground لـ Swift