تشغيل تطبيقات ZIO
ZIOAppDefault
تشغيل تطبيقات ZIO درس مجاني في Scala for Backend Engineering & Functional Programming على CoddyKit. هذا هو الدرس 4 من أصل 4. يمكنك قراءة الدرس كاملاً أدناه مجاناً — ثم تمرن عليه مباشرة في المتصفح باستخدام محرر أكواد مدمج ومدرس ذكاء اصطناعي متاح 24/7. هذا الدرس جزء من مسار التعلم في Scala for Backend Engineering & Functional Programming، وتقدمك يتزامن عبر الويب وتطبيق CoddyKit. تتضمن دورة Scala for Backend Engineering & Functional Programming 4 دروس في المجموع.
من الوصف إلى التنفيذ
قيمة ZIO ليست سوى مخطط. ولتنفيذها، مرّرها إلى بيئة تشغيل ZIO، وذلك عادةً بتمديد ZIOAppDefault بدلًا من استدعاء بيئة التشغيل يدويًا.
ZIOAppDefault
مدّدوا ZIOAppDefault ونفّذوا run. ويوفر الإطار الخدمات الافتراضية (Console وClock وRandom وSystem)، ويدير بدء التشغيل وإيقافه.
import zio._
object Hello extends ZIOAppDefault {
def run = Console.printLine("Hello, ZIO!")
}قيمة run
إن run هي قيمة ZIO التي تستوفي بيئتها الخدمات الافتراضية. أما نوعا الخطأ والنجاح فمرنان؛ وتُبلغ بيئة التشغيل عن الإخفاقات وتضبط رمز الخروج.
تطبيق متعدد الخطوات
ركّبوا منطق التطبيق باستخدام for-comprehension. كل سطر هو تأثير تنفّذه بيئة التشغيل بالتتابع.
import zio._
object Greeter extends ZIOAppDefault {
def run = for {
_ <- Console.printLine("What is your name?")
name <- Console.readLine
_ <- Console.printLine(s"Hello, $name!")
} yield ()
}توفير الطبقات في run
إذا كان تطبيقكم يعتمد على خدمات مخصصة، فوفّروا طبقاتها باستخدام provide على تأثير run حتى تُستوفى البيئة بالكامل قبل التنفيذ.
import zio._
object App extends ZIOAppDefault {
// def run = program.provide(MyService.layer)
def run = ZIO.unit
}رموز الخروج
افتراضيًا، تنتهي run الناجحة برمز 0، بينما تنتهي حالة الفشل برمز غير صفري. ويمكنكم أيضًا إعادة ExitCode صريح باستخدام exitCode.
import zio._
object App extends ZIOAppDefault {
def run = Console.printLine("done").exitCode
}وسائط سطر الأوامر
يمكنكم الوصول إلى وسائط البرنامج باستخدام ZIOAppArgs عبر ZIOApp.args أو getArgs، اللتين تعيدان Chunk[String].
import zio._
object App extends ZIOAppDefault {
def run = for {
args <- getArgs
_ <- Console.printLine(s"args: ${args.mkString(", ")}")
} yield ()
}معالجة الإخفاقات عند الحد الخارجي
من الممارسات الجيدة معالجة الأخطاء أو تسجيلها في المستوى الأعلى حتى تطبع بيئة التشغيل رسالة واضحة. استخدموا catchAll أو tapError داخل run.
import zio._
object App extends ZIOAppDefault {
val logic = ZIO.fail("oops")
def run = logic.catchAll(e => Console.printLine(s"Failed: $e"))
}تشعيب Fibers
يمكنكم داخل run تشعيب التأثيرات باستخدام fork على fibers للتنفيذ المتزامن، ثم إجراء join لها لاحقًا. وتشرف بيئة التشغيل على جميع fibers وتقاطِعها عند الإيقاف.
import zio._
val prog = for {
fiber <- ZIO.succeed(40).fork
result <- fiber.join
_ <- Console.printLine(s"got $result")
} yield ()التشغيل اليدوي غير الآمن
خارج ZIOAppDefault، يمكنكم تشغيل تأثير باستخدام Unsafe.unsafe وRuntime، لكن هذا مخصص لحدود التكامل، وليس لشيفرة التطبيقات العادية.
import zio._
// Unsafe.unsafe { implicit u =>
// Runtime.default.unsafe.run(myEffect).getOrThrow()
// }main في Scala العادي
للمقارنة، هذه نقطة دخول مستقلة في Scala. تؤدي ZIOAppDefault دور main، لكنها توصل الخدمات وتدير الإبلاغ عن الأخطاء والإشراف على fibers.
object Main {
def main(args: Array[String]): Unit = {
println("Hello, ZIO!")
}
}تحقق سريع
ما الطريقة الموصى بها لتشغيل تطبيق ZIO؟
مراجعة
لقد تعلمتم تشغيل تطبيقات ZIO باستخدام:
ZIOAppDefaultمع تأثيرrun- الخدمات الافتراضية و
provideللطبقات - رموز الخروج والوسائط ومعالجة الأخطاء في المستوى الأعلى
- تشعيب fibers وحدود التشغيل غير الآمن
لقد أتممتم دورة أساسيات ZIO.
تعلم Scala مع معلم ذكاء اصطناعي — مجانًا
اكتب وقم بتشغيل أكوادك الفعلية في المتصفح، واحصل على مساعدة فورية من معلم ذكاء اصطناعي متاح 24/7، واستمر من حيث توقفت على الويب أو في التطبيق.
- الدورات
- 39
- الدروس
- 143
الأسئلة الشائعة
هل درس «تشغيل تطبيقات ZIO» مجاني؟
نعم — نص درس «تشغيل تطبيقات ZIO» كامل متاح مجاناً هنا على الويب. لتمرينه بشكل تفاعلي (محرر أكواد مدمج ومدرس ذكاء اصطناعي متاح 24/7) وفتح باقي دورة Scala for Backend Engineering & Functional Programming، انتقل إلى CoddyKit PRO. تتضمن دورة Scala for Backend Engineering & Functional Programming 4 دروس في المجموع.
ماذا ستتعلم في «تشغيل تطبيقات ZIO»؟
ZIOAppDefault تتمرن على Scala for Backend Engineering & Functional Programming مع أكواد عملية تشغلها مباشرة في المتصفح، ومدرس ذكاء اصطناعي متاح 24/7 يجيب على أسئلتك أثناء عملك.
هل أحتاج إلى خبرة سابقة لأبدأ Scala for Backend Engineering & Functional Programming؟
لا تُشترط خبرة سابقة. Scala for Backend Engineering & Functional Programming على CoddyKit منظم للمبتدئين حتى المتقدمين، لذا يمكنك البدء من هنا أو من البداية والتقدم بسرعتك الخاصة. هذا هو الدرس 4 من أصل 4.
كم من الوقت يستغرق درس «تشغيل تطبيقات ZIO»؟
معظم دروس CoddyKit تستغرق حوالي 5–10 دقائق. كل منها موجز وتفاعلي، لذا تحرز تقدماً مستمراً وتستأنف من حيث توقفت عبر الويب والتطبيق.
هل يمكنني كتابة وتشغيل أكواد في درس Scala for Backend Engineering & Functional Programming هذا؟
نعم. كل درس في Scala for Backend Engineering & Functional Programming يتضمن محرر أكواد مدمج، لذا تكتب وتشغل أكواداً حقيقية مباشرة في متصفحك وتحصل على تعليقات فورية من الذكاء الاصطناعي — بدون إعداد محلي.
جميع الدروس في هذه الدورة
- أثر ZIO
- تركيب ZIO
- قنوات الأخطاء والتبعيات
- تشغيل تطبيقات ZIO