كائن قابل للاستدعاء
الكائن القابل للاستدعاء ، في برمجة الحاسوب ، هو أي كائن يمكن استدعاؤه كدالة .
بلغات مختلفة
في لغة C++
- مؤشر إلى دالة ؛
- مؤشر إلى دالة عضو ؛
- دالة ؛
- تعبير لامدا .
std::functionهي فئة قالب يمكنها احتواء أي كائن قابل للاستدعاء يطابق توقيعها.
في لغة C++، يمكن استدعاء أي فئة تقوم بتحميل عامل استدعاء الدالة باستخدام صيغة استدعاء الدالة.operator()
استيراد std ؛struct Foo { void operator ()() const { std :: println ( "تم استدعاؤها." ); } };int main () { Foo instance ; instance (); // سيتم عرض عبارة "تم استدعاؤه." على الشاشة. }شركة#
- مندوب ؛
- تعبير لامدا .
في لغة PHP
يحتوي PHP 5.3+ على دوال من الدرجة الأولى يمكن استخدامها كمعامل للدالة على سبيل المثال usort():
$a = array ( 3 , 1 , 4 ); usort ( $a , function ( $x , $y ) { return $x - $y ; });من الممكن أيضًا في PHP 5.3+ جعل الكائنات قابلة للاستدعاء عن طريق إضافة __invoke()طريقة سحرية إلى فئتها: [ 1 ]
class Minus { public function __invoke ( $x , $y ) { return $x - $y ; } }$a = array ( 3 , 1 , 4 ); usort ( $a , new Minus ());في لغة بايثون
في لغة بايثون،__call__() يمكن استدعاء أي كائن يحتوي على طريقة باستخدام صيغة استدعاء الدالة.
class Foo : def __call__ ( self ) -> None : print ( "تم استدعاؤها." )instance : Foo = Foo () instance () # سيتم إخراج "تم الاتصال." إلى الشاشة.مثال آخر:
class Accumulator : def __init__ ( self , n : int ) -> None : self . n = ndef __call __ ( self , x : int ) - > int : self.n + = x return self.nفي لعبة رمي السهام
يتم تعريف الكائنات القابلة للاستدعاء في لغة دارت باستخدام call()الطريقة.
class WannabeFunction { call ( String a , String b , String c ) => ' $ a $ b $ c !' ; }main () { var wf = new WannabeFunction (); var out = wf ( "Hi" , "there," , "gang" ); print ( ' $ out ' ); }في لغة سويفت
في لغة Swift ، يتم تعريف الكائنات القابلة للاستدعاء باستخدام callAsFunction. [ 4 ]
struct CallableStruct { var value : Int func callAsFunction ( _ number : Int , scale : Int ) { print ( scale * ( number + value )) } } let callable = CallableStruct ( value : 100 ) callable ( 4 , scale : 2 ) callable . callAsFunction ( 4 , scale : 2 ) // كلا استدعاءي الدالتين يطبعان 208.مراجع
- ↑ توثيق PHP حول الدوال السحرية
- ↑ بوش، فلوريان. "ما هو "callable" في بايثون؟" . StackOverflow.com . تم الاطلاع عليه بتاريخ 24 سبتمبر 2017 .
- ↑ "جولة في لغة دارت" . www.dartlang.org . تاريخ الاسترجاع: 25-03-2019 .
- ↑ "التصريحات - لغة برمجة سويفت (سويفت 5.6)" . docs.swift.org . تم الاطلاع عليه بتاريخ 28-02-2022 .
روابط خارجية
- مفهوم الاستدعاء في لغة C++
فئات :
- كائن (علوم الحاسوب)
- البرامج الفرعية
- نماذج أولية لبرمجة الحاسوب
