نوع عملية = | جمع بنوع عدد | ضرب بنوع عدد;
عرف طبق(القيمة: عدد, العملية: عملية): عدد {
طابق العملية مع
| عملية.جمع(المقدار) -> { أرجع القيمة + المقدار; }
| عملية.ضرب(المقدار) -> { أرجع القيمة * المقدار; };
}
عرف الرئيسية(): عدد {
دع الأولى: عملية = عملية.جمع(1);
دع الثانية: عملية = عملية.ضرب(2);
أرجع طبق(طبق(20, الأولى), الثانية);
}type Operation = | Add of int | Multiply of int;
def apply(value: int, operation: Operation): int {
match operation with
| Operation.Add(amount) -> { return value + amount; }
| Operation.Multiply(amount) -> { return value * amount; };
}
def main(): int {
let first: Operation = Operation.Add(1);
let second: Operation = Operation.Multiply(2);
return apply(apply(20, first), second);
}
التشغيل
بالمفسر، دون ترجمة:
./build/sultanc run examples/ar/data/enums.snأو ترجمه إلى ملف تنفيذي:
./build/sultanc examples/ar/data/enums.sn -o build/example && ./build/example