সুইফট প্রোগ্রামিং এ অ্যারে

সুইফটে কালেকশন

সুইফট প্রোগ্রামিং এ তিনটি বিল্টইন কালেকশন রয়েছেঃ

  • Array
  • Dictionary
  • Set

যেখানে অর্ডারড ডেটা রাখার জন্য অ্যারে ব্যবহার করা হয়। আনঅর্ডারড এবং ইউনিক ডেটা রাখার জন্য সেট ব্যবহার করা হয়। এবং কী-ভ্যালু পেয়ারে আনঅর্ডারড ডেটা রাখার জন্য ডিকশনারি ব্যবহার করা হয়।

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

এখন মিউটেবল ব্যবহার করব কখন ইমমিউটেবল ব্যবহার করব, তা নির্ভর করবে ডেটার উপর। যে কালেকশনের ডেটা পরিবর্তন হবে না, তাকে আমরা কনস্টেন্টে রাখব। আর যে কালেকশনের ডেটা পরিবর্তন করতে হতে পারে, তা রাখব ভ্যারিয়েবলে।

সুইফট প্রোগ্রামিং এ অ্যারে তৈরি

একই ধরণের ডেটা স্টোর করার জন্য অ্যারে ব্যবহার করা হয়। যেমন নিউম্যারিক অ্যারেতে আমরা শুধু নিউম্যারিক ডেটাই স্টোর করতে পারব। আবার স্ট্রিং ডেটাতে শুধু স্ট্রিং। দুই ধরণের ডেটা এক সাথে একই অ্যারেতে রাখা যাবে না। অ্যারে ভ্যারিয়েবল নিচে মত করে ডিক্লেয়ার করা হয়ঃ

var numbers: [Int] = []

এখানে আমরা numbers একটা ইন্টিজার শূন্য অ্যারে তৈরি করেছি। ভ্যালু সহ এভাবে অ্যারে তৈরি করতে পারিঃ

var numbers: [Int] = [1, 2, 3, 4, 5]

উপড়ে আমরা বলে দিয়েছি কি ধরণের ডেটা স্টোর করব। কিন্তু আমরা বলে না দিলেও সুইফট বুঝতে পারবে আমরা কি ধরণের ডেটা স্টোর করেছি।

var numbers = [1, 2, 3, 4, 5]
print(type(of: numbers))

যা আউটপুট দিবেঃ Array । এর মানে এক্সপ্লিসিটলি অ্যারের টাইপ না বলে দিলেও হবে।
অ্যারে তৈরির সময় ডিফল্ট ভ্যালু দিয়ে অ্যারে ইনিশিয়ালাইজ করে নিতে পারি এভাবেঃ

var numbers = Array(1...5)
print(numbers)

যা 1 থেকে 5 পর্যন্ত সংখ্যা গুলো দিয়ে একটি অ্যারে তৈরি করে দিবে। উপরের কোডের আউটপুট পাবোঃ

[1, 2, 3, 4, 5]

একই ভাবে একটা নির্দিষ্ট ভ্যালু দিয়েও ইনিশিয়ালাইজ করে নিতে পারিঃ

var numbers = Array(repeating: 0.0, count: 5)
print(numbers)
print(type(of: numbers))

আউটপুট পাবোঃ

[0.0, 0.0, 0.0, 0.0, 0.0]
Array<Double>

এখানে আমরা 0.0 ব্যবহার করায় একটা Double টাইপের অ্যারে তৈরি করে দিয়েছে। এখানে যে কোন স্ট্রিংও ব্যবহার করতে পারি।

অ্যারের সাইজ বের করা

var numbers = [1, 2, 3, 4, 5]
print(numbers.count)

আউটপুট পাবোঃ 5
অ্যারে এক্সেসিং

অ্যারে থেকে যে কোন একটা ইলিম্যান্ট এক্সেস করার জন্য যে ইনডেক্সের আইটেম এক্সেস করতে চাচ্ছি, তা বলে দিতে হয়। যেমনঃ


var names = ["Billy", "Catty", "Lily"]
print(names[0])

যা আউটপুট দিবেঃ Billy

জেনে রাখা দরকার যে, অ্যারের বা কালেকশনের ইন্ডেক্সিং শুরু হয় ০ থেকে। অর্থাৎ names[0] তে থাকবে অ্যারের প্রথম আইটেম। এই অ্যারেতে যা হচ্ছে Billy। দ্বিতীয় ইন্ডেক্স names[1] থাকবে Catty এভাবে বাকি গুলো।

সাবস্ক্রিপ্ট ব্যবহার করেও আমরা অ্যারের ভ্যালু গুলো এক্সেস করতে পারি। যেমনঃ

var names = ["Billy", "Catty", "Lily", "Fluffy", "Meow"]
print(names[2...4])

খেয়াল রাখেতে হবে যেন যে ইনডেক্স রেঞ্জ আমরা বলে দিচ্ছি, সেই ইনডেক্সে আইটেম থাকে। এখন যদি names[2…5] রেঞ্জের আইটেম গুলো এক্সেস করতে চাই, Array index is out of range এরর দিবে। এর কারন হচ্ছে 5 তম ইনডেক্সে কিছু নেই। আমাদের আরেতে আইটেম সংখ্যা হচ্ছে 5টি। আর সর্বশেষ ইনডেক্স হচ্ছে 4।

অ্যারেতে নতুন একটি আইটেম এড করার জন্য লিখবঃ

var names = ["Billy", "Catty", "Lily" ]
names.append("Fluffy")
print(names)

আউটপুট পাবোঃ [“Billy”, “Catty”, “Lily”, “Fluffy”]
এর মানে names অ্যারেতে নতুন একটি আইটেম যুক্ত হয়েছে Fluffy নামে। একই কোড এভাবেও লিখতে পারিঃ

var names = ["Billy", "Catty", "Lily" ]
names += ["Fluffy"]
print(names)

আমরা চাইলে নির্দিষ্টি একটা ইনডেক্সে একটা আইটেম যোগ করতে পারিঃ

var names = ["Billy", "Catty", "Lily", "Fluffy"]
names.insert("Meow", at: 2)
print(names)

যা অ্যারের তৃতীয় ইনডেক্সে নতুন আইটেমটি যোগ করে দিবে। আউটপুট পাবোঃ [“Billy”, “Catty”, “Meow”, “Lily”, “Fluffy”]

অ্যারের যে কোন একটা ইলিম্যান্ট পরিবর্তন করতে চাইলেঃ

var names = ["Billy", "Catty", "Lily" ]
names[0] = "New Billy"
print(names)

উপরের প্রোগ্রামে আমরা বলে দিয়েছে অ্যারের প্রথম ইনডেক্সের আইটেমের ভ্যালু New Billy সেট করতে। যার আউটপুট আমরা পেয়েছিঃ [“New Billy”, “Catty”, “Lily”]

অ্যারে থেকে নির্দিষ্ট ইনডেক্স থেকে একটা আইটেম রিমুভ করার জন্যঃ

var names = ["Billy", "Catty", "Lily" ]
print(names.remove(at: 2))

যা অ্যারের তৃতীয় আইটেমটি রিমুভ করে রিটার্ণ করবে। আউটপুট পাবো Lily।

এছাড়া removeFirst, removeLast, removeAll এসব মেথড ব্যবহার করতে পারি। অ্যারে থেকে সব গুলো আইটেম মুছে ফেলার জন্য removeAll মেথড ব্যবহার করা হয়।

দুইটা অ্যারে একত্র করা

দুইটা অ্যারে আমরা ইচ্ছে করলে এক সাথ করতে পারি + দিয়ে। যেমনঃ

var n1 = [1, 2, 3]
var n2 = [4, 5, 6]
var n3 = n1 + n2
print(n3)

আউটপুট পাবোঃ

[1, 2, 3, 4, 5, 6]

এভাবেও দুইটা অ্যারে যোগ করতে পারি। অ্যারিথম্যাটিক অপারেশনের মতঃ

var n1 = [1, 2, 3]
n1 += [4, 5, 6]
print(n1)

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

var catInfo = ["catty" : 2 , "billy": 1 , "putty": 3]

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

var catInfo: Dictionary <String, Int> = ["catty" : 2 , "billy": 1 , "putty": 3]

isEmpty
রিয়েল লাইফ প্রোগ্রাম লেখার সময় আমাদের অনেক সময় চেক করতে হয় যে অ্যারেটি খালি কিনা। আর তা চেক করতে পারি isEmpty প্রোপার্টি ব্যবহার করে। isEmpty একটা বুলিয়ান ভ্যালু রিটার্ণ করে। true অথবা false। ফলে আমরা যে কোন কন্ডিশনালে এটি ব্যবহার করতে পারি। যেমনঃ

var numbers: [Int] = []

if(numbers.isEmpty){
    print("List is empty.")
}else{
    print("List is not empty.")
}

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

Leave a Reply