madadi
6 سال پیش توسط madadi مطرح شد
4 پاسخ

توضیح دقیق funtion closure

سلام دوستان
اگر ممکنه یه تعریف دقیق و جامع و ساده از function closure بفرمایید ممنون میشم


ثبت پرسش جدید
bardia
تخصص : Golang/Laravel
@mrbardia72 6 سال پیش مطرح شد
1

Anonymous function ها به بیان ساده همان تابع ها هستن با این تفاوت که نامی ندارند. برای مثال نوشتن یک تابع معمولی در php چیزی مانند زیر است :

PHP
// Regular function
function greeting () {
  return "Hello world";
}

و برای صدا زدن تابع بالا به روش زیر عمل مکنیم :

PHP
echo greeting();
// Returns "Hello world"

خب حالا anonymous function ها نامی ندارن پس به صورت زیر تعریف می شوند :

PHP
// Anonymous function
function () {
  return "Hello world";
}

به دلیل اینکه این تابع ها اسمی ندارند پس یا باید آن ها را درون یک متغیر بریزیم یا به یک فانکشن دیگه ای پاس بدیم.

PHP
// Anonymous function
// assigned to variable
$greeting = function () {
  return "Hello world";
}
// Call function
echo $greeting();
// Returns "Hello world"

همان طور که دیدید ما تابع رو داخل یک متغیر ریختیم و سپس متغیر رو صدا زدیم.

همچنین همانطور که بالا گفتم میتونیم اونو به یه تابع دیگه پاس بدیم به این صورت »

PHP
// Pass Lambda to function
function shout ($message){
  echo $message();
}
// Call function
shout(function(){
  return "Hello world";
});

از این تابع ها میشه زمانی استفاده کرده که نیاز دارین یک تابع تعریف کنید و فقط یک بار اجراش کنید…..


رافق مجتهدزاده
تخصص : برنامه نویسی php
@rafig 3 سال پیش مطرح شد
0

سلام @mrbardia72
تو سوال برای function closure توضیح خواسته شده بود اما شما برای Anonymous function توضیح نوشتید.
اینها یکی هستند؟


محمدعلی بنی اسدی
تخصص : کدنویس پایتون
@mr.vns10 3 سال پیش مطرح شد
-1

سلام نمیدونم متاسفانه خخخخ


Naser Ghasemi
@nnaserr7474 3 سال پیش مطرح شد
0

یک closure به عنوان یک anonymous function شناخته میشه که تابع بدون نام معرفی میشه.
مثال زیر برای شما به شناخت بهتر کمک میکنه:

  function ShowName(Closure $closure) {
    $closure();
}

ShowName(function(){
    echo 'ناصر قاسمی';
});
// output:  ناصر قاسمی

در واقع در مثال بالا در تابع ShowName یک آرگومان از نوع Closure دریافت می شود.
نکته: Closure می تواند خودش آر گومان نیز داشته باشد. به مثال زیر توجه کنید:

function SayHelloToName(Closure $closure) {
    $closure('ناصر قاسمی');
}
SayHelloToName(function($value){
echo "Hello to $value";
});
// output:  Hello to ناصر قاسمی

برای ارسال پاسخ لازم است وارد شده یا ثبت‌نام کنید

ورود یا ثبت‌نام