ক্লোজার (Clojure) ভাষায় Collections গুরুত্বপূর্ণ ভূমিকা পালন করে এবং প্রোগ্রামিংয়ের প্রয়োজন অনুসারে বিভিন্ন ডেটা সংগঠিত ও ম্যানিপুলেট করার জন্য বিভিন্ন ধরণের সংগ্রহ বা Collections সরবরাহ করে। এই চারটি প্রধান Collection হল - List
, Vector
, Set
, এবং Map
। প্রতিটির নিজস্ব বৈশিষ্ট্য, সুবিধা, এবং ব্যবহারের উদ্দেশ্য রয়েছে।
List
হলো একটি সিকোয়েন্স ডেটা কাঠামো যা সাধারণত ফাংশন কল বা রিকার্সিভ অপারেশনগুলির জন্য ব্যবহার করা হয়। ক্লোজারে List
সাধারণত লিংকড লিস্ট আকারে থাকে, এবং প্রতিটি উপাদান তার পূর্ববর্তী উপাদানের সাথে সংযুক্ত থাকে।
List
অর্ডারড এবং ইমিউটেবল।'()
বা (list ...)
ব্যবহার উদাহরণ:
(def my-list '(1 2 3 4 5))
(first my-list) ; আউটপুট: 1
(rest my-list) ; আউটপুট: (2 3 4 5)
(cons 0 my-list) ; আউটপুট: (0 1 2 3 4 5)
ব্যবহার: সাধারণত ক্রমবদ্ধ অপারেশন, স্ট্যাক বা কিউয়ের মতো স্ট্রাকচারে।
Vector
হলো একটি ইমিউটেবল এবং ইন্ডেক্সড ডেটা কাঠামো, যা দ্রুত অ্যাক্সেস এবং সংশোধনের জন্য উপযোগী। Vector
-এ প্রতিটি আইটেমের অবস্থান একটি ইন্ডেক্স দ্বারা নির্ধারিত হয় এবং এটি অ্যারে-ভিত্তিক, ফলে ইনডেক্সের মাধ্যমে তাৎক্ষণিক অ্যাক্সেস সম্ভব।
[]
বা (vector ...)
ব্যবহার উদাহরণ:
(def my-vector [1 2 3 4 5])
(nth my-vector 1) ; আউটপুট: 2
(conj my-vector 6) ; আউটপুট: [1 2 3 4 5 6]
(count my-vector) ; আউটপুট: 5
ব্যবহার: সাধারণত এমন ক্ষেত্র যেখানে দ্রুত অ্যাক্সেস এবং সংশোধনের প্রয়োজন হয়।
Set
একটি ডেটা কাঠামো, যেখানে প্রতিটি মান একবারই উপস্থিত থাকতে পারে। Set
-এর মানগুলো ইউনিক এবং এটি সাধারণত ডুপ্লিকেট সরাতে এবং মেম্বারশিপ যাচাইয়ের জন্য ব্যবহার করা হয়।
#{}
বা (set ...)
ব্যবহার উদাহরণ:
(def my-set #{1 2 3 4 5})
(contains? my-set 3) ; আউটপুট: true
(conj my-set 6) ; আউটপুট: #{1 2 3 4 5 6}
(disj my-set 2) ; আউটপুট: #{1 3 4 5}
ব্যবহার: ডুপ্লিকেট সরানো এবং দ্রুত মেম্বারশিপ যাচাইয়ের জন্য।
Map
হলো একটি অ্যাসোসিয়েটিভ ডেটা কাঠামো যা key-value
পেয়ার আকারে ডেটা সংরক্ষণ করে। ম্যাপ সাধারণত ডেটা অনুসন্ধান এবং অ্যাসোসিয়েটিভ ডেটা সংরক্ষণের জন্য ব্যবহৃত হয়।
{}
বা (hash-map ...)
ব্যবহার উদাহরণ:
(def my-map {:name "Alice" :age 30 :city "New York"})
(:name my-map) ; আউটপুট: "Alice"
(get my-map :age) ; আউটপুট: 30
(assoc my-map :country "USA") ; আউটপুট: {:name "Alice", :age 30, :city "New York", :country "USA"}
(dissoc my-map :city) ; আউটপুট: {:name "Alice", :age 30}
ব্যবহার: অ্যাসোসিয়েটিভ ডেটা মডেল এবং কী-ভিত্তিক ডেটা অ্যাক্সেসের জন্য।
ডেটা কাঠামো | বৈশিষ্ট্য | সাধারণ ব্যবহার |
---|---|---|
List | অর্ডারড, ইমিউটেবল | ক্রমবদ্ধ অপারেশন, স্ট্যাক বা কিউয়ের মতো |
Vector | ইমিউটেবল, ইন্ডেক্সড | দ্রুত অ্যাক্সেস এবং সংশোধন |
Set | অনন্য মান | মেম্বারশিপ যাচাই এবং ডুপ্লিকেট সরানো |
Map | কী-ভ্যালু পেয়ার | অ্যাসোসিয়েটিভ ডেটা সংরক্ষণ এবং অনুসন্ধান |
এই চারটি Collection বা ডেটা কাঠামো ক্লোজারে বিভিন্ন পরিস্থিতিতে ডেটা সংগঠিতভাবে সংরক্ষণ, অ্যাক্সেস এবং ম্যানিপুলেশনের জন্য খুবই উপযোগী।
common.read_more