Type facts computed by the compiler for the selected target
// Type facts computed by the compiler for the selected target.
import std.io.println;
import std.text.number;
import std.meta.reflect;
type Pixel = { red: u8, green: u8, blue: u8, alpha: u8 };
type Direction = | North | East | South | West;
def main(): int {
let pixel: Pixel = { red: 1, green: 2, blue: 3, alpha: 4 };
let heading: Direction = Direction.East();
println(uint_to_text(size_of(&pixel) as uint));
println(uint_to_text(field_count(&pixel) as uint));
println(uint_to_text(constructor_count(&heading) as uint));
return 0;
}// حقائق الأنواع التي يحسبها المترجم للهدف المختار.
استورد std.io.println;
استورد std.text.number;
استورد std.meta.reflect;
نوع نقطة_صورة = { الأحمر_قيمة: ط8, الأخضر: ط8, الأزرق: ط8, الشفافية: ط8 };
نوع اتجاه = | شمال | شرق | جنوب | غرب;
عرف الرئيسية(): عدد {
دع البكسل: نقطة_صورة = { الأحمر_قيمة: 1, الأخضر: 2, الأزرق: 3, الشفافية: 4 };
دع الوجهة: اتجاه = اتجاه.شرق();
اطبع_سطر(طبيعي_إلى_نص(حجم_النوع(&البكسل) مثل طبيعي));
اطبع_سطر(طبيعي_إلى_نص(عدد_حقول_النوع(&البكسل) مثل طبيعي));
اطبع_سطر(طبيعي_إلى_نص(عدد_منشئات_النوع(&الوجهة) مثل طبيعي));
أرجع 0;
}
Run it
With the interpreter, without compiling:
./build/sultanc run examples/en/comptime/reflection.snOr compile it to an executable:
./build/sultanc examples/en/comptime/reflection.sn -o build/example && ./build/example