Closure একটি গুরুত্বপূর্ণ বৈশিষ্ট্য Groovy তে, যা ফাংশনাল প্রোগ্রামিং ধারণাকে সমর্থন করে। এটি এমন একটি ফাংশন বা কোড ব্লক যা অন্য ফাংশনের ভিতরে ডিফাইন করা থাকে এবং বাইরে থেকে কিছু ভেরিয়েবল বা স্টেট অ্যাক্সেস করতে পারে। Closures Groovy তে সাধারণত লম্বা বা পুনরাবৃত্তি কোড কম করতে এবং কোডের পুনঃব্যবহারযোগ্যতা বাড়াতে ব্যবহৃত হয়।
একটি closure হল একটি অ্যানোনিমাস (অজ্ঞাত) ফাংশন বা ব্লক যা অন্য ফাংশনের ভিতরে বা বাইরের কোডের সঙ্গে কাজ করতে পারে এবং যে কোন ভেরিয়েবল বা মান আউটপুট দিতে পারে। Closures সাধারণত কোডের পুনঃব্যবহারযোগ্য অংশ তৈরি করার জন্য ব্যবহৃত হয় এবং এটি Java এর ল্যাম্বডা এক্সপ্রেশনের মতো কাজ করে।
Groovy তে closure এর গঠন সাধারণত নিচের মতো হয়:
def closureName = { parameters ->
// কোড ব্লক
return result
}
এখানে:
def greet = { name ->
return "Hello, $name!"
}
println greet("Groovy") // Output: Hello, Groovy!
এখানে, greet
একটি closure, যা name
প্যারামিটার নেয় এবং "Hello, Groovy!" আউটপুট দেয়।
enclosing scope
বা lexical scoping এর মাধ্যমে কাজ করে। এই বৈশিষ্ট্যটি Groovy তে closures এর শক্তিশালী ব্যবহারিক দিক।def multiplier = 2
def multiplyClosure = { number ->
return number * multiplier
}
println multiplyClosure(5) // Output: 10
এখানে, multiplyClosure
বাইরের multiplier
ভেরিয়েবলটি অ্যাক্সেস করছে এবং সেই ভেরিয়েবলের মান ব্যবহার করে আউটপুট প্রিন্ট করছে।
কোড কমপ্যাক্ট করা: Closure ব্যবহারের মাধ্যমে আপনি কোড অনেক কম করতে পারেন এবং ফাংশন বা অ্যাকশনকে পুনরায় ব্যবহারযোগ্য করে তুলতে পারেন। দীর্ঘ বা পুনরাবৃত্তি কোড ব্লকগুলো closure দিয়ে খুব সহজেই একত্রিত করা যায়।
উদাহরণ:
def add = { a, b -> a + b }
def subtract = { a, b -> a - b }
println add(5, 3) // Output: 8
println subtract(5, 3) // Output: 2
ফাংশনাল প্রোগ্রামিং সমর্থন: Closure এর মাধ্যমে Groovy ফাংশনাল প্রোগ্রামিং প্যাটার্নগুলো সমর্থন করে, যেমন উচ্চ-অর্ডার ফাংশন, ম্যাপিং, ফিল্টারিং এবং রিডিউসিং।
উদাহরণ (Using collect
with Closure):
def numbers = [1, 2, 3, 4, 5]
def squaredNumbers = numbers.collect { it * it }
println squaredNumbers // Output: [1, 4, 9, 16, 25]
Closure এবং Collections: Groovy তে closures বিশেষভাবে collections এর সাথে ভালোভাবে কাজ করে, যেমন collect
, find
, every
, each
, ইত্যাদি।
উদাহরণ (Using each
with Closure):
def numbers = [1, 2, 3, 4, 5]
numbers.each { println it }
আউটপুট:
1
2
3
4
5
Closure and Map Operations: Groovy তে closures ব্যবহার করে আপনি ম্যাপের ওপর নানা অপারেশন করতে পারেন, যেমন ম্যাপের ভ্যালু ম্যানিপুলেট করা।
উদাহরণ (Using Closure on Map):
def person = [name: "John", age: 30]
person.each { key, value -> println "$key: $value" }
আউটপুট:
name: John
age: 30
Groovy তে closures কোড লেখার জন্য একটি শক্তিশালী এবং নমনীয় উপায়। এটি ফাংশনাল প্রোগ্রামিংয়ের সুবিধা প্রদান করে, বাইরের ভেরিয়েবল অ্যাক্সেস করতে পারে, এবং কোড কমপ্যাক্ট ও পুনঃব্যবহারযোগ্য করে তোলে। Closures কোডের নমনীয়তা বৃদ্ধি করে এবং কোডের পারফরমেন্স ও রিডেবিলিটি উন্নত করতে সাহায্য করে। Groovy তে closures এর সুবিধা এবং ব্যবহার শুধুমাত্র ছোট কোড ব্লক তৈরি করার মধ্যেই সীমাবদ্ধ নয়, এটি বড় এবং জটিল অ্যাপ্লিকেশনগুলিতেও কার্যকরীভাবে ব্যবহৃত হতে পারে।
common.read_more