`فشل_وقت_الترجمة` يرفض وسيطة وقت ترجمة خاطئة أثناء الترجمة
// `فشل_وقت_الترجمة` يرفض وسيطة وقت ترجمة خاطئة أثناء الترجمة.
// تغيير `عرض_متحقق(8)` إلى `عرض_متحقق(80)` يوقف البناء.
استورد std.io.println;
استورد std.text.number;
استورد std.meta.reflect;
عرف عرض_متحقق(وقت_الترجمة البتات: عدد): عدد {
إذا (البتات > 64) {
فشل_وقت_الترجمة("يجب ألا يتجاوز العرض 64 بتا");
};
أرجع البتات;
}
عرف الرئيسية(): عدد {
اطبع_سطر(عدد_إلى_نص(عرض_متحقق(8)));
أرجع 0;
}// `compile_error` rejects a bad compile-time argument while compiling.
// Changing `checked_width(8)` to `checked_width(80)` stops the build.
import std.io.println;
import std.text.number;
import std.meta.reflect;
def checked_width(comptime bits: int): int {
if (bits > 64) {
compile_error("width must be at most 64 bits");
};
return bits;
}
def main(): int {
println(int_to_text(checked_width(8)));
return 0;
}
التشغيل
بالمفسر، دون ترجمة:
./build/sultanc run examples/ar/comptime/compile_error.snأو ترجمه إلى ملف تنفيذي:
./build/sultanc examples/ar/comptime/compile_error.sn -o build/example && ./build/example