كائن قابل للاستدعاء

الكائن القابل للاستدعاء ، في برمجة الحاسوب ، هو أي كائن يمكن استدعاؤه كدالة .

بلغات مختلفة

في لغة C++

في لغة 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 () # سيتم إخراج "تم الاتصال." إلى الشاشة.

[ 2 ]

مثال آخر:

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 ' ); }

[ 3 ]

في لغة سويفت

في لغة 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.

مراجع

  1. توثيق PHP حول الدوال السحرية
  2. بوش، فلوريان. "ما هو "callable" في بايثون؟" . StackOverflow.com . تم الاطلاع عليه بتاريخ 24 سبتمبر 2017 .
  3. "جولة في لغة دارت" . www.dartlang.org . تاريخ الاسترجاع: 25-03-2019 .
  4. "التصريحات - لغة برمجة سويفت (سويفت 5.6)" . docs.swift.org . تم الاطلاع عليه بتاريخ 28-02-2022 .
  • مفهوم الاستدعاء في لغة C++