معامل `وقت_الترجمة` ينشئ نسخة مخصصة من الدالة لكل قيمة
// معامل `وقت_الترجمة` ينشئ نسخة مخصصة من الدالة لكل قيمة.
استورد std.io.println;
استورد std.text.number;
عرف كبر(وقت_الترجمة المعامل: عدد, القيمة: عدد): عدد {
أرجع القيمة * المعامل;
}
عرف أس(وقت_الترجمة الأس: عدد, القاعدة: عدد): عدد {
دع النتيجة: متغير عدد = 1;
دع ف: متغير عدد = 0;
طالما (ف < الأس) {
النتيجة := النتيجة * القاعدة;
ف := ف + 1;
}
أرجع النتيجة;
}
عرف الرئيسية(): عدد {
دع سبعة: عدد = 7;
اطبع_سطر(عدد_إلى_نص(كبر(3, سبعة)));
اطبع_سطر(عدد_إلى_نص(كبر(5, سبعة)));
اطبع_سطر(عدد_إلى_نص(أس(3, 4)));
أرجع 0;
}// A `comptime` parameter makes one specialized copy of the function per value.
import std.io.println;
import std.text.number;
def scale(comptime factor: int, value: int): int {
return value * factor;
}
def power(comptime exponent: int, base: int): int {
let result_value: mutable int = 1;
let i: mutable int = 0;
while (i < exponent) {
result_value := result_value * base;
i := i + 1;
}
return result_value;
}
def main(): int {
let seven: int = 7;
println(int_to_text(scale(3, seven)));
println(int_to_text(scale(5, seven)));
println(int_to_text(power(3, 4)));
return 0;
}
التشغيل
بالمفسر، دون ترجمة:
./build/sultanc run examples/ar/comptime/specialization.snأو ترجمه إلى ملف تنفيذي:
./build/sultanc examples/ar/comptime/specialization.sn -o build/example && ./build/example