السلطان
  1. الرئيسية
  2. الأمثلة
  3. التنسيق

المكتبة.تنسيق

قالب تنسيق فيه مواضع `{}` ومتجه وسائط، مثل format! في Rust

fmt/formatting.sn
// المكتبة.تنسيق: قالب تنسيق فيه مواضع `{}` ومتجه وسائط، مثل format! في Rust
// وfmt.Sprintf في Go. والمواصفة بعد `:` تحدد الحشو والمحاذاة والإشارة و`#`
// والحشو بالأصفار والعرض والدقة والنوع.
استورد المكتبة.تنسيق.fmt;

عرف الرئيسية(): عدد {
    دع الاسم: نص = «سلطان»;
    دع ر1: نتيجة طبيعي, خطأ_تنسيق = اطبع_سطرا_منسقا(«أهلا يا {}! لديك {} رسائل.», [قيمة_تنسيق.نص(&الاسم), قيمة_تنسيق.عدد(3)]);

    // المواضع والهروب والمحاذاة.
    دع ر2: نتيجة طبيعي, خطأ_تنسيق = اطبع_سطرا_منسقا(«{1} {0} {1} {{أقواس}}», [قيمة_تنسيق.نص(&الاسم), قيمة_تنسيق.عدد(42)]);
    دع ر3: نتيجة طبيعي, خطأ_تنسيق = اطبع_سطرا_منسقا(«[{0:<10}] [{0:^10}] [{0:>10}] [{0:*^10}]», [قيمة_تنسيق.نص(&الاسم)]);

    // الأعداد: الإشارة والحشو بالأصفار والأسس والصيغة البديلة.
    دع ر4: نتيجة طبيعي, خطأ_تنسيق = اطبع_سطرا_منسقا(«{0:+} {0:06} {1:x} {1:#X} {1:#o} {2:#010b}», [قيمة_تنسيق.عدد(-42), قيمة_تنسيق.عدد(255), قيمة_تنسيق.ط8(5)]);

    // العائمة: أقصر نص يعاد تحليله، ودقة ثابتة، والصيغة الأسية.
    دع ر5: نتيجة طبيعي, خطأ_تنسيق = اطبع_سطرا_منسقا(«{1} {0:.2} {0:8.3} {2:e} {2:.1E}», [قيمة_تنسيق.ع64(3.14159265), قيمة_تنسيق.ع64(0.1 + 0.2), قيمة_تنسيق.ع64(1234.5)]);

    // العرض والدقة من الوسائط، وخرج التصحيح.
    دع ر6: نتيجة طبيعي, خطأ_تنسيق = اطبع_سطرا_منسقا(«[{0:>1$.2$}]», [قيمة_تنسيق.ع64(2.71828), قيمة_تنسيق.طبيعي(9), قيمة_تنسيق.طبيعي(3)]);
    دع العناصر: متجه نص = [«شاي», "\"قهوة\""];
    دع الصحاح: متجه عدد = [1, 2, 3];
    دع ر7: نتيجة طبيعي, خطأ_تنسيق = اطبع_سطرا_منسقا(«{:?} {:?}», [قيمة_تنسيق.نصوص(&العناصر), قيمة_تنسيق.أعداد(&الصحاح)]);

    // قالب التنسيق الحرفي يفحص وقت الترجمة: «{} {}» بلا وسائط لا يترجم.
    // والقالب المبني وقت التشغيل يفحص عند استعماله، والخطأ فيه قيمة خطأ لا انهيار.
    دع القالب: نص = «{} {}»;
    طابق نسق(القالب, []) مع
    | نتيجة.نجح(_) -> { أرجع 1; }
    | نتيجة.خطأ(_) -> { دع ر8: نتيجة طبيعي, خطأ_تنسيق = اطبع_سطرا_منسقا(«يحتاج قالب التنسيق وسيطين», []); };
    أرجع 0;
}

التشغيل

بالمفسر، دون ترجمة:

./build/sultanc run examples/ar/fmt/formatting.sn

أو ترجمه إلى ملف تنفيذي:

./build/sultanc examples/ar/fmt/formatting.sn -o build/example && ./build/example

المصدر على GitHub   كل الأمثلة