السلطان
  1. الرئيسية
  2. الأمثلة
  3. الدوال

الدوال المجهولة تلتقط القيم المحيطة بها ويمكن إرجاعها

functions/closures.sn
// الدوال المجهولة تلتقط القيم المحيطة بها ويمكن إرجاعها.
استورد std.io.println;
استورد std.text.number;

عرف أنشئ_جامعا(المقدار: عدد): دالة(عدد): عدد {
    أرجع دالة(القيمة: عدد): عدد -> القيمة + المقدار;
}

عرف الرئيسية(): عدد {
    دع أضف_عشرة: دالة(عدد): عدد = أنشئ_جامعا(10);
    دع أضف_اثنين: دالة(عدد): عدد = أنشئ_جامعا(2);
    دع المنحني: دالة(عدد): دالة(عدد): عدد = دالة(أ: عدد): دالة(عدد): عدد -> دالة(ب: عدد): عدد -> أ * ب;
    دع ثلاثة_أضعاف: دالة(عدد): عدد = المنحني(3);
    اطبع_سطر(عدد_إلى_نص(أضف_عشرة(5)));
    اطبع_سطر(عدد_إلى_نص(أضف_اثنين(أضف_عشرة(30))));
    اطبع_سطر(عدد_إلى_نص(ثلاثة_أضعاف(14)));
    أرجع 0;
}

التشغيل

بالمفسر، دون ترجمة:

./build/sultanc run examples/ar/functions/closures.sn

أو ترجمه إلى ملف تنفيذي:

./build/sultanc examples/ar/functions/closures.sn -o build/example && ./build/example

المصدر على GitHub   كل الأمثلة