`وقت_الترجمة` ينفذ الشيفرة أثناء الترجمة، والبرنامج يرى الناتج فقط
// `وقت_الترجمة` ينفذ الشيفرة أثناء الترجمة، والبرنامج يرى الناتج فقط.
استورد std.io.println;
استورد std.text.number;
عرف مجموع_المربعات(الحد: عدد): عدد {
دع المجموع: متغير عدد = 0;
دع ف: متغير عدد = 1;
طالما (ف <= الحد) {
المجموع := المجموع + ف * ف;
ف := ف + 1;
}
أرجع المجموع;
}
عرف الرئيسية(): عدد {
دع حجم_الجدول: عدد = وقت_الترجمة مجموع_المربعات(10);
دع فيبوناتشي_20: عدد = وقت_الترجمة {
دع أ: متغير عدد = 0;
دع ب: متغير عدد = 1;
دع ف: متغير عدد = 0;
طالما (ف < 20) {
دع التالي: عدد = أ + ب;
أ := ب;
ب := التالي;
ف := ف + 1;
}
أ
};
اطبع_سطر(عدد_إلى_نص(حجم_الجدول));
اطبع_سطر(عدد_إلى_نص(فيبوناتشي_20));
أرجع 0;
}// `comptime` runs code while compiling; the program only sees the result.
import std.io.println;
import std.text.number;
def sum_of_squares(limit: int): int {
let total: mutable int = 0;
let i: mutable int = 1;
while (i <= limit) {
total := total + i * i;
i := i + 1;
}
return total;
}
def main(): int {
let table_size: int = comptime sum_of_squares(10);
let fibonacci_20: int = comptime {
let a: mutable int = 0;
let b: mutable int = 1;
let i: mutable int = 0;
while (i < 20) {
let next: int = a + b;
a := b;
b := next;
i := i + 1;
}
a
};
println(int_to_text(table_size));
println(int_to_text(fibonacci_20));
return 0;
}
التشغيل
بالمفسر، دون ترجمة:
./build/sultanc run examples/ar/comptime/compile_time_values.snأو ترجمه إلى ملف تنفيذي:
./build/sultanc examples/ar/comptime/compile_time_values.sn -o build/example && ./build/example