النتائج القابلة للاسترداد
لبات 0.7.0 · الإصدار الحالي
أعد تحية أو إخفاق empty-name، واقرأ حمولة الفرع المناسب وحدها.
محتويات الصفحة
ما الذي ستتعلمه
أعد تحية ناجحة للاسم غير الفارغ أو إخفاق empty-name للنص الفارغ. عالج النتيجتين بقراءة حمولة الفرع المناسب وحدها، وميز النتائج من المصائد وأخطاء المصدر.
قبل أن تبدأ
اقرأ الدوال والشروط وتحليل الأعداد لفهم قالب النتائج السابق. يتضمن البرنامج المستقل الدالة المساعدة ودالة الدخول. افتح مسودة جديدة في الرئيسية واختر تشغيل صراحة؛ تبقى المسودات السابقة متاحة.
أعد قيمة أو معلومات خطأ
يصرح دالة حي(اسم: نص) -> نتيجة<نص> / fn greet(name: string) -> result<string> بدالة مساعدة حمولة نجاحها نص. تقارن اسم يطابق "" / name matches "" محتوى النص. يعيد الاسم الفارغ إخفاق("empty-name", "name is empty") / failure(...). يوفر نوع الإرجاع النوع المتوقع نتيجة<نص> للإخفاق، الذي لا يحمل حمولة نجاح. يعيد النص غير الفارغ نجاح("Hello, " + اسم + "!") / success(...). يعيد كلا المسارين نتيجة.
التنفيذ: المتصفح والمضيف الأصلي · لبات 0.7.0
- اقرأ شرح المثال في الدرس المرتبط قبل التشغيل.
الإدخال: لا يحتاج إلى أسطر إدخال.
دالة حي(اسم: نص) -> نتيجة<نص> {
إذا (اسم يطابق "") {
أرجع إخفاق("empty-name", "name is empty").
}
أرجع نجاح("Hello, " + اسم + "!").
}
دالة ابدأ_الرئيسية() -> ص64 {
دع تحية: نتيجة<نص> = حي("سلمى").
إذا (تحية::نجاح) {
اطبع(تحية::قيمة + "\س").
} وإلا {
اطبع(تحية::الخطأ::الرمز + "\س").
}
دع فارغ: نتيجة<نص> = حي("").
إذا (فارغ::نجاح) {
اطبع(فارغ::قيمة + "\س").
} وإلا {
اطبع(فارغ::الخطأ::الرمز + "\س").
}
أرجع 0.
}
النتائج المتوقعة
{
"browser": {
"check": "success",
"class": "success",
"output": "Hello, سلمى!\nempty-name\n",
"processStatus": 0
},
"native": {
"check": 0,
"status": 0,
"output": "Hello, سلمى!\nempty-name\n"
}
}يستدعي البرنامج الدالة أولا بالاسم "سلمى" ثم بالنص "". تختبر ::نجاح / ::ok فرع النتيجة بقيمة منطقية. يطبع فرع النجاح وحده ::قيمة / ::value؛ ويقرأ فرع الإخفاق وحده ::الخطأ::الرمز / ::error::code. يضيف كل سطر \س صراحة. تحتوي معلومات_خطأ / error_info على الرمز / code ثابت والرسالة / message وصفية. اتخذ القرارات بالرموز لا بصياغة الرسالة. تختار الدالة المساعدة رمزها ورسالتها.
نتيجة الإخفاق بيانات عادية لا تصدر تشخيصا وتسمح بتنفيذ لاحق. تختلف عن خطأ المصدر الذي يمنع التنفيذ، وعن مصيدة لا يمكن التقاطها وتنهي التشغيل. أرجع 0 / return 0 في دالة الدخول حالة العملية الطبيعية بعد معالجة النتيجتين، وليست حمولة تحية أو رمز خطأ. الإيقاف وحدود الموارد نتيجتان منفصلتان أيضا.
توقع الفرعين
حدد قبل التشغيل الحمولة التي يمكن لكل استدعاء قراءتها. الخرج الدقيق Hello, سلمى!\nempty-name\n والحالة 0. لا يوفر الاستدعاء الثاني المخفق نص نجاح. النص الذي يحتوي مسافات غير فارغ؛ لا تزيل الدالة المسافات.
يقرأ الفشل المقصود المنفصل التالي قيمة من نتيجة إخفاق. ينجح الفحص، لكن تحدث مصيدة wrong-result-branch دون طباعة أو حالة دخول طبيعية. قراءة الخطأ عند النجاح خاطئة أيضا. يستخدم المصدر العربي ::قيمة والإنجليزي ::value. يعرض تنفيذ لبات 0.7.0 الأصلي المنشور المصيدة نفسها ويخرج بالحالة 5؛ هذه ليست حالة دخول طبيعية. تستخدم مصادر الدرس المحروسة الفرع الصحيح على المضيفين.
التنفيذ: المتصفح والمضيف الأصلي · لبات 0.7.0
- اقرأ شرح المثال في الدرس المرتبط قبل التشغيل.
الإدخال: لا يحتاج إلى أسطر إدخال.
دالة ابدأ_الرئيسية() -> ص64 {
دع رد: نتيجة<نص> = إخفاق("empty-name", "name is empty").
اطبع(رد::قيمة).
أرجع 0.
}
النتائج المتوقعة
{
"browser": {
"check": "success",
"class": "trap",
"output": "",
"reason": "wrong-result-branch"
},
"native": {
"check": 0,
"status": 5,
"output": "",
"reason": "wrong-result-branch"
}
}غير التحية الناجحة
غير فقط بادئة النجاح في الدالة من "Hello, " إلى "Welcome, ". أبق إخفاق الاسم الفارغ وفرعي المستدعي. الخرج المتوقع بالضبط Welcome, سلمى!\nempty-name\n والحالة الطبيعية 0.
غير التحية الناجحة إلى Welcome, وتوقع الاستدعاءين.
تلميح: عدل النص داخل نجاح. أبق اختبار الاسم الفارغ والإخفاق وحراس نجاح دون تغيير.
اعرض الإجابة المشروحة
يصل الاسم غير الفارغ إلى نجاح، فيطبع فرع النجاح لدى المستدعي Welcome, سلمى! وسطره الجديد. ما زال النص الفارغ يعيد empty-name دون حمولة نجاح. يقرأ فرع الإخفاق وحده رمز الخطأ ويطبعه. تسمح معالجة نتيجة الإخفاق لدالة الدخول بالاستمرار وإرجاع الحالة الطبيعية 0.
التنفيذ: المتصفح والمضيف الأصلي · لبات 0.7.0
- اقرأ شرح المثال في الدرس المرتبط قبل التشغيل.
الإدخال: لا يحتاج إلى أسطر إدخال.
دالة حي(اسم: نص) -> نتيجة<نص> {
إذا (اسم يطابق "") {
أرجع إخفاق("empty-name", "name is empty").
}
أرجع نجاح("Welcome, " + اسم + "!").
}
دالة ابدأ_الرئيسية() -> ص64 {
دع تحية: نتيجة<نص> = حي("سلمى").
إذا (تحية::نجاح) {
اطبع(تحية::قيمة + "\س").
} وإلا {
اطبع(تحية::الخطأ::الرمز + "\س").
}
دع فارغ: نتيجة<نص> = حي("").
إذا (فارغ::نجاح) {
اطبع(فارغ::قيمة + "\س").
} وإلا {
اطبع(فارغ::الخطأ::الرمز + "\س").
}
أرجع 0.
}
النتائج المتوقعة
{
"browser": {
"check": "success",
"class": "success",
"output": "Welcome, سلمى!\nempty-name\n",
"processStatus": 0
},
"native": {
"check": 0,
"status": 0,
"output": "Welcome, سلمى!\nempty-name\n"
}
}تحقق من فهمك
اشرح من أين يحصل الإخفاق على نوع حمولته ولماذا لا تكون قراءة أي حمولة خاطئة آمنة. قارن empty-name وwrong-result-branch ونوع إرجاع خاطئا. لا تحفظ درجة أو تقدم، ويبقى التنقل مفتوحا. عد إلى مسار التعلم أو اقرأ مرجع النتائج.