By using this site, you agree to the Privacy Policy and Terms of Use.
موافق
عرب فلاترعرب فلاتر
  • Dart
  • Widgets
  • Packages
  • Tutorials
  • Flutter Roadmap
  • تثبيت Dart
  • تثبيت Flutter
قراءة: الدرس 51: شرح مفهوم الـ Type Promotion في لغة دارت (Dart)
شارك
تسجيل الدخول
إشعار أظهر المزيد
Aa
عرب فلاترعرب فلاتر
Aa
  • Dart
  • Widgets
  • Packages
  • Tutorials
  • Flutter Roadmap
  • تثبيت Dart
  • تثبيت Flutter
Search

أقسام الموقع

استكشف جميع أقسام الموقع
قسم Dart في موقع عرب فلاتر

Dart

59 مقالات
قسم Widgets في موقع عرب فلاتر

Widgets

104 مقالات
قسم Packages في موقع عرب فلاتر

Packages

19 مقالات
قسم Tutorials في موقع عرب فلاتر

Tutorials

22 مقالات

أخر المواضيع

استكشف أخر المواضيع المنشورة
شرح الـ Event Loop في Flutter وجعل التطبيق لا يتوقف أبدًا
Tutorials

شرح الـ Event Loop في Flutter وجعل التطبيق لا يتوقف أبدًا

5
حل مشكلة التوافق بين Java و Kotlin و Gradle في فلاتر
Tutorials

حل مشكلة التوافق بين Java و Kotlin و Gradle في فلاتر

10
أفضل الـ Packages في Flutter لتسريع تطوير التطبيقات
Tutorials

أفضل الـ Packages في Flutter لتسريع تطوير التطبيقات

18
لديك حساب موجود؟ تسجيل الدخول
  • Dart
  • Widgets
  • Packages
  • Tutorials
  • Flutter Roadmap
  • تثبيت Dart
  • تثبيت Flutter
© جميع الحقوق محفوظة موقع عرب فلاتر 2023
عرب فلاتر > Dart > الدرس 51: شرح مفهوم الـ Type Promotion في لغة دارت (Dart)
Dart

الدرس 51: شرح مفهوم الـ Type Promotion في لغة دارت (Dart)

عبدالله يوسف
أخر تحديث 2024/11/15
بواسطة عبدالله يوسف اضف تعليق 5 دقيقة للقراءة 1818 مشاهدات 3
شارك
شرح مفهوم الـ Type Promotion في لغة دارت (Dart)
شرح مفهوم الـ Type Promotion في لغة دارت (Dart)
شارك

خدماتنا البرمجية – عرب فلاتر🚀

خدماتنا البرمجية – عرب فلاتر

تعتبر Type Promotion في لغة Dart من المفاهيم المهمة لفهم كيفية تحويل القيم من نوع إلى آخر. تقوم Dart بتنفيذ Type Promotion تلقائيًا عندما تكون على دراية بنوع محدد للقيمة. تعزز هذه الميزة من قدرة المطورين على الوصول إلى خصائص ووظائف محددة لأنواع البيانات المعينة وتحسن من أمان التطبيقات. في هذه المقالة، سنتعرف على كيفية عمل Type Promotion في Dart ونقدم بعض الأمثلة لتوضيح ذلك.

المحتويات
مثال 1: الترقية من الأنواع العامة إلى الأنواع الفرعية المحددةمثال 2: الترقية من nullable إلى non-nullableمثال 3: الترقية من nullable إلى non-nullableمثال 4: الترقية من nullable إلى non-nullable

مثال 1: الترقية من الأنواع العامة إلى الأنواع الفرعية المحددة

في هذا الجزء، سنتعلم كيفية ترقية القيم من أنواع عامة إلى أنواع فرعية محددة. يتم ذلك عن طريق تحديد النوع المحدد في بنية التحكم المناسبة. دعونا نلقي نظرة على الكود التالي الذي يوضح ذلك:

void main() {
  Object name = "John";

  if (name is String) {
    // تم ترقية القيمة من Object إلى String
    print("اسم المستخدم: $name");
    print("طول الاسم: ${name.length}");
  }
}

نتيجة الكود:

اسم المستخدم: John
طول الاسم: 4

في هذا المثال، قمنا بتعريف متغير name من نوع Object وتم تعيين قيمة “John” له. ثم نستخدم بنية التحكم if للتحقق مما إذا كانت القيمة تمثل نوع String أم لا. إذا تم التحقق بنجاح، يتم ترقية القيمة من Object إلى String ويمكننا الوصول إلى خصائص النص مثل length.


مثال 2: الترقية من nullable إلى non-nullable

في هذا الجزء، سنتعلم كيفية الترقية من nullable إلى non-nullable. يتم ذلك بشكل تلقائي عندما يتم تعيين قيمة non-nullable للمتغير. دعونا نلقي نظرة على الكود التالي:

void main() {
  String? result;

  if (DateTime.now().hour < 12) {
    result = "صباح الخير";
  } else {
    result = "مساء الخير";
  }

  print("النتيجة: $result");
  print("طول النتيجة: ${result.length}");
}

ناتج الكود:

النتيجة: مساء الخير
طول النتيجة: 10

في المثال الثاني، نقوم بتوضيح كيفية ترقية القيم من nullable إلى non-nullable في Dart.

نقوم بتعريف متغير result من نوع String?، حيث العلامة الاستفهام تشير إلى أن القيمة nullable (قد تكون null).

بعد ذلك، نستخدم بنية التحكم if لفحص الوقت الحالي. إذا كانت قيمة الساعة أقل من 12، نقوم بتعيين قيمة “صباح الخير” للمتغير result، وإلا فإننا نعيّن قيمة “مساء الخير”.

بعد ذلك، نقوم بطباعة قيمة المتغير result باستخدام الدالة print. ومن ثم، نقوم بطباعة طول النص في المتغير result باستخدام الخاصية length.


مثال 3: الترقية من nullable إلى non-nullable

دعونا نلقي نظرة على الكود التالي:

// طريقة لطباعة طول النص
void printLength(String? text) {
  if (text == null) {
    throw Exception("النص فارغ");
  }
  print("طول النص: ${text.length}");
}

void main() {
  printLength("مرحبا");
}

ناتج الكود:

طول النص: 5

في هذا المثال، قمنا بتعريف دالة printLength التي تأخذ معامل من نوع String? وهو nullable. في حالة أن القيمة تكون null، فإننا نقوم بإلقاء استثناء يشير إلى أن النص فارغ. وفي حالة أن القيمة غير null، يتم طباعة طول النص.


مثال 4: الترقية من nullable إلى non-nullable

دعونا نلقي نظرة على الكود التالي:

import 'dart:math';

class DataProvider {
  String? getStringOrNull() {
    return Random().nextBool() ? "مرحبا" : null;
  }

  void myMethod() {
    String? value = getStringOrNull();

    if (value is String) {
      print("طول القيمة: ${value.length}");
    } else {
      print("القيمة ليست من نوع نص");
    }
  }
}

void main() {
  DataProvider().myMethod();
}

ناتج الكود:

طول القيمة: 5

في هذا المثال، لدينا كلاس DataProvider الذي يحتوي على الدالة getStringOrNull التي تقوم بإرجاع قيمة من نوع String أو null بشكل عشوائي. ثم نستخدم بنية التحكم if للتحقق مما إذا كانت القيمة تمثل نوع String أم لا. في حالة التحقق الناجح، يتم طباعة طول القيمة، وإلا يتم طباعة رسالة تشير إلى أن القيمة ليست من نوع نص.


إن فهم مفهوم الـ Type Promotion في لغة دارت يعتبر أمرًا حاسمًا لتحسين جودة الأكواد وتسهيل عملية تطوير التطبيقات. يتيح لك هذا المفهوم القوي الوصول إلى قوة التحويل الأوتوماتيكي للأنواع دون الحاجة إلى تكرار الاختبارات والتحويلات اليدوية. بفهمك الجيد لهذا المفهوم، ستتمكن من بناء تطبيقات دارت أكثر فعالية وأمانًا.

Arab Flutter Community 🚀

انضم إلى مجتمع Arab Flutter
شارك هذا المقال
فيسبوك تويتر Whatsapp Whatsapp لينكد ان تلغرام نسخ الرابط
المقال السابق شرح مفهوم Null Safety في لغة دارت (Null Safety In Dart) الدرس 50: شرح مفهوم الـ Null Safety في لغة دارت (Dart)
المقال التالي شرح كلمة Late في لغة دارت (Late in Dart) الدرس 52: شرح كلمة Late في لغة دارت (Late in Dart)
Avatar of عبدالله يوسف
بواسطة عبدالله يوسف Founder and CEO at ArabFlutter
تابع:
أنا عبدالله يوسف، مهندس مصري ومؤسس موقع عرب فلاتر، ملهم بشغف التكنولوجيا والإبداع. كمصمم مواقع ومبرمج تطبيقات موبايل باستخدام Flutter، أستمتع بخلق عوالم رقمية فريدة ومبتكرة. تتجلى مواهبي في تصميم وتطوير واجهات مستخدم تفاعلية، حيث يمزج الجانب الجمالي بالدقة الهندسية. ما يميزني هو إلمامي الواسع بتقنيات البرمجة والتصميم، ومقدرتي على تطوير تطبيقات متنوعة عبر منصات مختلفة. أعتبر نفسي مبدعًا وملتزمًا، حيث أسعى دائمًا لتحقيق تحسين مستمر في مهاراتي وتقنياتي. أستمتع بتحديات العمل الجماعي وأؤمن بأهمية الابتكار والتطور. بفضل إبداعي والتزامي، أسعى لتقديم حلول فعّالة تلبي توقعات العملاء وتفوق عن المألوف.
اترك تعليقا اترك تعليقا

اترك تعليقاً إلغاء الرد

لن يتم نشر عنوان بريدك الإلكتروني. الحقول الإلزامية مشار إليها بـ *

شرح الـ Event Loop في Flutter وجعل التطبيق لا يتوقف أبدًا
شرح الـ Event Loop في Flutter وجعل التطبيق لا يتوقف أبدًا
Tutorials
حل مشكلة التوافق بين Java و Kotlin و Gradle في فلاتر
حل مشكلة التوافق بين Java و Kotlin و Gradle في فلاتر
Tutorials
أفضل الـ Packages في Flutter لتسريع تطوير التطبيقات
أفضل الـ Packages في Flutter لتسريع تطوير التطبيقات
Tutorials
طريقة انشاء المجلدات باستخدام Dart
طريقة انشاء المجلدات باستخدام كود Dart تلقائيًا
Tutorials

مقالات ذات الصلة

اطلع على المزيد من المقالات المتعلقة بهذا الموضوع!
شرح العوازل في لغة دارت (Isolates in Dart)
Dart

شرح العوازل في لغة دارت (Isolates in Dart)

8
شرح الـ Stream في لغة دارت (Stream in Dart)
Dart

الدرس 57: شرح الـ Stream في لغة دارت (Stream in Dart)

8
شرح عبارات async & await في لغة دارت (Dart)
Dart

الدرس 56: شرح عبارات async & await في لغة دارت (Dart)

6
شرح مفهوم الـ Future في لغة دارت (Future In Dart)
Dart

الدرس 55: شرح مفهوم الـ Future في لغة دارت (Future In Dart)

6
شرح مفهوم الـ Asynchronous في لغة دارت (Dart)
Dart

الدرس 54: شرح مفهوم الـ Asynchronous في لغة دارت (Dart)

6
10 تمارين محلولة على Null Safety في لغة دارت Dart
Dart

الدرس 53: 10 تمارين محلولة على Null Safety في لغة دارت Dart

5
أظهر المزيد
شعار موقع عرب فلاتر شعار موقع عرب فلاتر

About US

Quick Links

  • خدماتنا
  • من نحن
  • اتصل بنا
  • اتفاقية استخدام
  • سياسة الخصوصية
© جميع الحقوق محفوظة موقع عرب فلاتر 2023
  • Dart
  • Widgets
  • Packages
  • Tutorials
  • Flutter Roadmap
  • تثبيت Dart
  • تثبيت Flutter
adbanner
تم اكتشاف مانع إعلانات
مرحبًا، يرجى إيقاف مانع الإعلانات. الإعلانات تُساهم في دعم موقعنا وتغطية جزء من تكاليف الاستضافة وتطوير المحتوى. شكرًا لتفهمك ودعمك.
Okay, I'll Whitelist
Welcome Back!

Sign in to your account

هل نسيت كلمة المرور؟