অনেক আধুনিক প্রোগ্রামিং ল্যাঙ্গুয়েজ ক্লোজারের কিছু ধারণাকে সমর্থন করে , অর্থাত্ কোডের একটি অংশ (একটি ব্লক বা কোনও ফাংশন) যা
- একটি মান হিসাবে বিবেচনা করা যেতে পারে, এবং সেইজন্য একটি ভেরিয়েবলে সংরক্ষণ করা হয়, কোডের বিভিন্ন অংশে পাস করা হয়, কোনও প্রোগ্রামের এক অংশে সংজ্ঞায়িত করা হয় এবং একই প্রোগ্রামের সম্পূর্ণ ভিন্ন অংশে আহ্বান করা হয়।
- যে প্রসঙ্গে এটি সংজ্ঞায়িত করা হয়েছে সেগুলি থেকে ভেরিয়েবলগুলি ক্যাপচার করতে পারে এবং পরে যখন অনুরোধ করা হয় তখন এগুলি অ্যাক্সেস করতে পারে (সম্ভবত সম্পূর্ণ ভিন্ন প্রসঙ্গে)।
এখানে স্কালায় লিখিত একটি বন্ধের উদাহরণ রয়েছে:
def filterList(xs: List[Int], lowerBound: Int): List[Int] =
xs.filter(x => x >= lowerBound)
ফাংশন আক্ষরিকের x => x >= lowerBound
সাথে ফ্রি ভেরিয়েবল থাকে lowerBound
যা filterList
একই নামে ফাংশনের যুক্তির দ্বারা বন্ধ (আবদ্ধ) থাকে । বন্ধটি লাইব্রেরি পদ্ধতিতে পাস করা হয়েছে filter
, যা এটি একটি সাধারণ ক্রিয়া হিসাবে বারবার প্রার্থনা করতে পারে।
আমি এই সাইটে প্রচুর প্রশ্ন এবং উত্তর পড়ছি এবং যতদূর আমি বুঝতে পারি, বন্ধ শব্দটি প্রায়শই স্বয়ংক্রিয়ভাবে ফাংশনাল প্রোগ্রামিং এবং কার্যকরী প্রোগ্রামিং শৈলীর সাথে যুক্ত হয় ।
উইকিপিডিয়ায় ফাংশন প্রোগ্রামিংয়ের সংজ্ঞাটি পড়ে:
কম্পিউটার সায়েন্সে, ফাংশনাল প্রোগ্রামিং হ'ল একটি প্রোগ্রামিং দৃষ্টান্ত যা গণনাটিকে গণিতের ফাংশনগুলির মূল্যায়ন হিসাবে গণ্য করে এবং রাষ্ট্র এবং পরিবর্তনীয় ডেটা এড়িয়ে চলে ids এটি অত্যাবশ্যক প্রোগ্রামিং শৈলীর বিপরীতে ফাংশনগুলির প্রয়োগের উপর জোর দেয়, যা রাষ্ট্রের পরিবর্তনের উপর জোর দেয়।
এবং আরও
[...] ফাংশনাল কোডে, কোনও ফাংশনের আউটপুট মান কেবলমাত্র যুক্তিগুলির উপর নির্ভর করে যা ফাংশনে ইনপুট হয় [...]। পার্শ্ব প্রতিক্রিয়া দূরীকরণ কোনও প্রোগ্রামের আচরণ বুঝতে এবং ভবিষ্যদ্বাণী করা আরও সহজ করে তোলে যা কার্যকরী প্রোগ্রামিংয়ের বিকাশের অন্যতম মূল অনুপ্রেরণা।
অন্যদিকে, প্রোগ্রামিং ল্যাঙ্গুয়েজের সরবরাহিত অনেক ক্লোজার কনস্ট্রাক্টস একটি ক্লোজারকে অ-স্থানীয় ভেরিয়েবলগুলি ক্যাপচার করতে এবং ক্লোজারটি আহ্বান করা হলে তাদের পরিবর্তন করার অনুমতি দেয়, এইভাবে তারা যে পরিবেশে সংজ্ঞায়িত হয়েছিল তার উপর একটি পার্শ্ব প্রতিক্রিয়া তৈরি করে।
এক্ষেত্রে ক্লোজারগুলি ফাংশনাল প্রোগ্রামিংয়ের প্রথম ধারণাটি বাস্তবায়িত করে (ফাংশনগুলি প্রথম শ্রেণির সত্তা যা অন্যান্য মানগুলির মতো চলাফেরা করতে পারে) তবে দ্বিতীয় ধারণাটিকে অবহেলা করে (পার্শ্ব-প্রতিক্রিয়া এড়ানো)।
পার্শ্ব প্রতিক্রিয়াযুক্ত ক্লোজারগুলির এই ব্যবহারটি কি কার্যকরী শৈলী হিসাবে বিবেচিত হয় বা বন্ধগুলি আরও সাধারণ নির্মাণ হিসাবে বিবেচিত হয় যা কার্যকরী এবং অ-কার্যকরী প্রোগ্রামিং স্টাইল উভয়ের জন্য ব্যবহার করা যেতে পারে? এই বিষয়ে কোন সাহিত্য আছে?
গুরুত্বপূর্ণ তথ্য
আমি পার্শ্ব প্রতিক্রিয়াগুলির উপযোগিতা বা পার্শ্ব প্রতিক্রিয়াগুলির সাথে ক্লোজার হওয়ার বিষয়ে প্রশ্ন করছি না। এছাড়াও, আমি পার্শ্ব প্রতিক্রিয়াগুলি ছাড়াই বা ছাড়াই ক্লোজারগুলির সুবিধা / অসুবিধাগুলি সম্পর্কে আলোচনায় আগ্রহী নই।
আমি কেবল জানতে আগ্রহী যে এই ধরণের বন্ধগুলি ব্যবহার করা এখনও কার্যকরী প্রোগ্রামিংয়ের প্রবক্তার দ্বারা কার্যকরী শৈলী হিসাবে বিবেচিত হয় বা যদি বিপরীতে, কার্যকরী শৈলী ব্যবহার করার সময় তাদের ব্যবহারকে নিরুৎসাহিত করা হয়।