Swift-এ লিস্ট কম্প্রিহেনশন এর মতো সরাসরি কোনো বৈশিষ্ট্য নেই যেমনটা Python-এ দেখা যায়, তবে Swift-এ map, filter, এবং reduce ফাংশন ব্যবহার করে সহজেই ডেটা প্রসেসিং এবং ফিল্টারিং করা যায়। এগুলো ফাংশনাল প্রোগ্রামিং ধারণার সাথে সামঞ্জস্যপূর্ণ এবং অ্যারে বা অন্যান্য সংগ্রহ থেকে নতুন সংগ্রহ তৈরি করতে সহায়ক।
১. map ফাংশন
map ফাংশন একটি অ্যারে বা সংগ্রহের প্রতিটি উপাদানের উপর নির্দিষ্ট অপারেশন প্রয়োগ করে একটি নতুন সংগ্রহ তৈরি করে। এটি অনেকটা লিস্ট কম্প্রিহেনশনের মতো কাজ করে।
উদাহরণ: একটি অ্যারের প্রতিটি উপাদানের বর্গমূল বের করা
let numbers = [1, 2, 3, 4, 5]
let squaredNumbers = numbers.map { $0 * $0 }
print(squaredNumbers) // Output: [1, 4, 9, 16, 25]
- এখানে,
mapফাংশন প্রতিটি উপাদানের বর্গমূল ($0 * $0) গণনা করে একটি নতুন অ্যারে তৈরি করেছে।
২. filter ফাংশন
filter ফাংশন একটি অ্যারে বা সংগ্রহের উপাদানগুলির মধ্যে নির্দিষ্ট শর্ত পূরণকারী উপাদানগুলো বেছে নিয়ে একটি নতুন সংগ্রহ তৈরি করে। এটি ডেটা ফিল্টারিং-এর জন্য খুবই উপযোগী।
উদাহরণ: জোড় সংখ্যা ফিল্টার করা
let numbers = [1, 2, 3, 4, 5, 6]
let evenNumbers = numbers.filter { $0 % 2 == 0 }
print(evenNumbers) // Output: [2, 4, 6]
- এখানে,
filterফাংশন ব্যবহার করে জোড় সংখ্যাগুলি ফিল্টার করা হয়েছে, অর্থাৎ যেসব সংখ্যা ২ দ্বারা বিভাজ্য (বা যাদেরmoduloঅপারেশন$0 % 2 == 0শর্ত পূরণ করে) সেগুলো একটি নতুন অ্যারে তৈরি করেছে।
৩. reduce ফাংশন
reduce ফাংশন একটি সংগ্রহের প্রতিটি উপাদানের উপর নির্দিষ্ট অপারেশন প্রয়োগ করে একটি একক মানে রূপান্তর করে। এটি একটি অ্যারের সব উপাদান যোগ, গুণ বা অন্য কোনো অপারেশনের ফলাফল একত্রিত করতে ব্যবহার করা হয়।
উদাহরণ: একটি অ্যারের উপাদানের যোগফল বের করা
let numbers = [1, 2, 3, 4, 5]
let sum = numbers.reduce(0) { $0 + $1 }
print(sum) // Output: 15
- এখানে,
reduceফাংশন0থেকে শুরু করে প্রতিটি উপাদান$0 + $1যোগ করে একটি একক ফলাফল (যোগফল) বের করেছে।
একাধিক ফাংশন চেইন করে ব্যবহার করা
Swift-এ map, filter, এবং reduce ফাংশন চেইন করে ব্যবহার করা যায়, যাতে একাধিক অপারেশন একত্রে সম্পন্ন করা যায়।
উদাহরণ: বর্গমূল ফিল্টার এবং যোগফল বের করা
let numbers = [1, 2, 3, 4, 5, 6]
let result = numbers
.map { $0 * $0 } // প্রতিটি উপাদানের বর্গমূল বের করা
.filter { $0 % 2 == 0 } // যেগুলো জোড় সংখ্যা সেগুলো ফিল্টার করা
.reduce(0, +) // ফিল্টার করা মানগুলোর যোগফল বের করা
print(result) // Output: 56
- প্রথমে
mapফাংশন ব্যবহার করে প্রতিটি উপাদানের বর্গমূল বের করা হয়েছে। - এরপর
filterফাংশন দিয়ে জোড় সংখ্যাগুলো ফিল্টার করা হয়েছে। - শেষে
reduceফাংশন ব্যবহার করে ফিল্টার করা উপাদানগুলোর যোগফল বের করা হয়েছে।
সংক্ষিপ্ত উপায়ে অ্যারে প্রসেসিং
Swift-এ এই ফাংশনগুলো ব্যবহার করে আপনি লিস্ট কম্প্রিহেনশনের মতো সংক্ষিপ্তভাবে অ্যারে এবং ডেটা প্রসেসিং করতে পারেন। নিচে আরও কিছু উদাহরণ দেওয়া হলো:
উদাহরণ: একটি অ্যারের প্রতিটি উপাদানের ২ গুণ করে একটি নতুন অ্যারে তৈরি করা
let numbers = [1, 2, 3, 4]
let doubledNumbers = numbers.map { $0 * 2 }
print(doubledNumbers) // Output: [2, 4, 6, 8]
উদাহরণ: নির্দিষ্ট দৈর্ঘ্যের স্ট্রিং ফিল্টার করা
let names = ["Alice", "Bob", "Charlie", "Dave"]
let longNames = names.filter { $0.count > 3 }
print(longNames) // Output: ["Alice", "Charlie", "Dave"]
- এখানে, স্ট্রিংগুলোর দৈর্ঘ্য (
count) ৩ এর বেশি হলে সেগুলো ফিল্টার করা হয়েছে।
উপসংহার
Swift-এ map, filter, এবং reduce ফাংশন ব্যবহার করে আপনি অ্যারে এবং অন্যান্য সংগ্রহের উপর বিভিন্ন ধরনের ডেটা প্রসেসিং করতে পারেন, যা Python-এর লিস্ট কম্প্রিহেনশনের মতো কার্যকর।
map: উপাদানগুলো রূপান্তর করতে।filter: শর্ত অনুযায়ী উপাদান ফিল্টার করতে।reduce: উপাদানগুলোর উপর অপারেশন প্রয়োগ করে একক ফলাফল বের করতে।
এগুলো ব্যবহার করে আপনি আপনার কোডকে সংক্ষিপ্ত, কার্যকর এবং সহজে পড়তে ও বুঝতে সক্ষম করতে পারেন।
Read more