راکت

توضیح دقیق funtion closure

4 پاسخ

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

ثبت پرسش جدید

پاسخ‌ها

4
bardia
bardia
@mrbardia72

تخصص: Golang/Laravel

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

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

رافق مجتهدزاده
رافق مجتهدزاده
@rafig

تخصص: برنامه نویسی php

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

شاید پاسخ شما همین‌جا باشد

محمدعلی بنی اسدی
محمدعلی بنی اسدی
@mr.vns10

تخصص: کدنویس پایتون

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

Naser Ghasemi
Naser Ghasemi
@nnaserr7474

یک 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 ناصر قاسمی

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

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