স্কালা ল্যাম্বডা ফাংশন এবং ক্লোজার

স্কালা ফাংশনাল প্রোগ্রামিং - স্কালা প্রোগ্রামিং (Scala Programming) - Computer Programming

242

স্কালায় ল্যাম্বডা ফাংশন এবং ক্লোজার ব্যবহার ফাংশনাল প্রোগ্রামিংয়ের দুটি অত্যন্ত গুরুত্বপূর্ণ ধারণা। এই দুটি বিষয় কোড লেখার সময় খুবই শক্তিশালী এবং কার্যকরী টুলস হিসেবে কাজ করে, বিশেষ করে যখন আপনি কমপ্লেক্স ফাংশনাল অপারেশন করতে চান।


১. ল্যাম্বডা ফাংশন (Lambda Functions)

ল্যাম্বডা ফাংশন বা এনোনিমাস ফাংশন (Anonymous Functions) হল এমন ফাংশন যেগুলি কোনো নাম ছাড়াই ডিফাইন করা হয়। এগুলি সাধারণত কোডের ভেতরে ছোট ফাংশন তৈরির জন্য ব্যবহৃত হয় এবং বিশেষ করে যেখানে ফাংশনের পুনঃব্যবহার করা প্রয়োজন নেই, সেখানে খুবই উপকারী।

স্কালায়, ল্যাম্বডা ফাংশন তৈরি করা হয় => সিনট্যাক্স ব্যবহার করে।

১.১ ল্যাম্বডা ফাংশনের সিনট্যাক্স

(val1: Type1, val2: Type2) => expression
  • val1 এবং val2 হল আর্গুমেন্টস।
  • Type1 এবং Type2 হল টাইপ।
  • expression হল ফাংশনের কাজ, যা আউটপুট প্রদান করে।

১.২ ল্যাম্বডা ফাংশনের উদাহরণ

উদাহরণ ১: একটি সংখ্যা গুণ করা

val multiply = (x: Int, y: Int) => x * y
println(multiply(5, 10))  // Output: 50

উদাহরণ ২: একটি সিম্পল ফাংশন

val add = (a: Int, b: Int) => a + b
println(add(2, 3))  // Output: 5

ল্যাম্বডা ফাংশনটি কোনও নাম ছাড়াই ব্যবহার করা যায় এবং সহজেই এক্সপ্রেশনগুলোকে একসাথে রাখতে সাহায্য করে।

১.৩ ফাংশন ব্যবহার করার সময় ল্যাম্বডা

ল্যাম্বডা ফাংশন সাধারণত সেই সব ফাংশনাল অপারেশনের জন্য ব্যবহৃত হয় যেখানে কোনো কাস্টম অপারেশন প্রয়োজন হয়, যেমন map, filter, reduce, ইত্যাদি।

উদাহরণ: map ফাংশনে ল্যাম্বডা ব্যবহার:

val numbers = List(1, 2, 3, 4)
val squared = numbers.map(x => x * x)
println(squared)  // Output: List(1, 4, 9, 16)

এখানে, map ফাংশনটি একটি ল্যাম্বডা ফাংশন নেয় যা প্রতিটি সংখ্যা নিয়ে তার বর্গফল বের করে।


২. ক্লোজার (Closures)

ক্লোজার হল এমন একটি ফাংশন যা তার বাইরের স্কোপের ভ্যারিয়েবলগুলির কাছে অ্যাক্সেস রাখতে পারে, যদিও সেই ভ্যারিয়েবলগুলি ক্লোজার ফাংশনের বাইরে ডিফাইন করা হয়েছে। এই প্রক্রিয়াকে ফাংশনাল স্কোপিং বলা হয়।

ক্লোজার ফাংশনগুলি সাধারণত সেই পরিস্থিতিতে ব্যবহৃত হয় যেখানে কোনও ফাংশনকে আর্গুমেন্ট হিসেবে পাঠাতে হয়, কিন্তু সেই ফাংশন অন্য ভ্যারিয়েবলের মান পরিবর্তন বা ব্যবহার করতে পারে যা বাইরের স্কোপে রয়েছে।

২.১ ক্লোজারের উদাহরণ

উদাহরণ ১: ক্লোজার ব্যবহার

val multiplier = 3
val multiplyByFactor = (x: Int) => x * multiplier

println(multiplyByFactor(5))  // Output: 15

এখানে, multiplyByFactor একটি ক্লোজার। এটি বাইরের স্কোপের multiplier ভ্যারিয়েবলটির মান (যেটি 3) ব্যবহার করছে।

২.২ ক্লোজার এবং ভ্যারিয়েবল পরিবর্তন

ক্লোজারের মধ্যে থাকা ফাংশন তার বাইরের স্কোপের ভ্যারিয়েবলটি পরিবর্তন করতে পারে, যদি তা mutable হয়।

var factor = 2
val multiplierClosure = (x: Int) => x * factor

println(multiplierClosure(5))  // Output: 10

factor = 10  // Changing the outer variable
println(multiplierClosure(5))  // Output: 50 (Closure retains the outer variable's value)

এখানে, multiplierClosure ফাংশনটি বাইরের স্কোপের factor ভ্যারিয়েবল ব্যবহার করে এবং যখন factor পরিবর্তিত হয়, তখন ক্লোজার সেই নতুন মানটি ধরতে পারে।

২.৩ ফাংশনাল স্কোপিং এবং ক্লোজার

স্কালার ক্লোজার ফাংশন দিয়ে কোড আরো কার্যকর এবং নমনীয় হয়, যেখানে একটি ফাংশন তার বাইরের স্কোপের তথ্য বা ভ্যারিয়েবলগুলো ব্যবহার করতে পারে এবং সেই অনুযায়ী পরিবর্তনও করতে পারে।


সারাংশ

  • ল্যাম্বডা ফাংশন হল নামহীন ফাংশন যা সাধারণত ছোট এবং একক প্রয়োগের জন্য ব্যবহৃত হয়। এটি => সিনট্যাক্সে তৈরি করা হয় এবং কোড সংক্ষিপ্ত ও কার্যকরী করে তোলে।
  • ক্লোজার হল এমন একটি ফাংশন যা বাইরের স্কোপের ভ্যারিয়েবলগুলির কাছে অ্যাক্সেস রাখে, এবং তার পরিবর্তন বা ব্যবহার করতে পারে, এমনকি ফাংশনটি সেই স্কোপের বাইরে কার্যকরী হলেও।

ল্যাম্বডা এবং ক্লোজার স্কালা কোডকে আরও শক্তিশালী, পাঠযোগ্য, এবং ফাংশনাল প্রোগ্রামিংয়ের দৃষ্টিকোণ থেকে আরও কার্যকরী করে তোলে।

Content added By
Promotion

Are you sure to start over?

Loading...