0 امتیاز
قبل در برنامه نویسی توسط (1.1هزار امتیاز)

قابلیت Closure در زبان های برنامه نویسی چگونه است، اینکه می گویند برای مثال زبان برنامه نویسی پایتون یا C# قابلیت Closure دارد چگونه است؟

1 پاسخ

0 امتیاز
قبل توسط (1.1هزار امتیاز)

قابلیت Closure معمولا در زبان های برنامه نویسی functional که در آنها توابع بعنوان نوع داده اولیه شناخته می شود کاربرد دارد، برای درک بهتر مفهوم Closure به مثال زیر به زبان پایتون دقت نمایید:

def counter():
    x = 0
    def increment(y):
        nonlocal x
        x += y
        print(x)
    return increment

تابع counter بعنوان مقدار بازگشتی یک تابع با نام increment بر می گرداند که از متغییر x که در counter تعریف شده است درون تابع increment استفاده شده است. بدلیل اینکه تابع increment به متغییر x دسترسی دارد و مقدار آن را نیز تغییر می دهد، تابع counter باید یک closure که حاوی یک ارجاع (reference) به تابع increment است بر گرداند.

closure بازگشتی توسط تابع counter را می توان در یک متغییر ذخیره کرد:

counter1_increment = counter()
counter2_increment = counter()

حالا فراخوانی متد increment درون closure نتیجه درست برای ما بر می گرداند:

counter1_increment(1)    # prints 1
counter1_increment(7)    # prints 8
counter2_increment(1)    # prints 1
counter1_increment(1)    # prints 9
counter2_increment(1)    # prints 2

منبع.

سوالات مشابه

0 امتیاز
0 پاسخ 538 بازدید
+1 امتیاز
1 پاسخ 289 بازدید
0 امتیاز
1 پاسخ 171 بازدید
سوال شده 8 سال قبل در برنامه نویسی توسط Saeed Zarinfam (1.1هزار امتیاز)
...