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

معامل `وقت_الترجمة` ينشئ نسخة مخصصة من الدالة لكل قيمة

comptime/specialization.sn
// معامل `وقت_الترجمة` ينشئ نسخة مخصصة من الدالة لكل قيمة.
استورد std.io.println;
استورد std.text.number;

عرف كبر(وقت_الترجمة المعامل: عدد, القيمة: عدد): عدد {
    أرجع القيمة * المعامل;
}

عرف أس(وقت_الترجمة الأس: عدد, القاعدة: عدد): عدد {
    دع النتيجة: متغير عدد = 1;
    دع ف: متغير عدد = 0;
    طالما (ف < الأس) {
        النتيجة := النتيجة * القاعدة;
        ف := ف + 1;
    }
    أرجع النتيجة;
}

عرف الرئيسية(): عدد {
    دع سبعة: عدد = 7;
    اطبع_سطر(عدد_إلى_نص(كبر(3, سبعة)));
    اطبع_سطر(عدد_إلى_نص(كبر(5, سبعة)));
    اطبع_سطر(عدد_إلى_نص(أس(3, 4)));
    أرجع 0;
}

التشغيل

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

./build/sultanc run examples/ar/comptime/specialization.sn

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

./build/sultanc examples/ar/comptime/specialization.sn -o build/example && ./build/example

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