Elixir:
স্ট্রিং এর দৈর্ঘ্য চিহ্নিত করা
কিভাবে:
এলিক্সিরে, আপনি String.length/1
ফাংশন ব্যবহার করে একটি স্ট্রিং এর দৈর্ঘ্য পেতে পারেন। এটি কিভাবে করবেন তা নীচে দেওয়া হল:
my_string = "Hello, World!"
length = String.length(my_string)
IO.puts(length)
নমুনা আউটপুট:
13
গভীর ডুব
অন্তরভাগে, এলিক্সির স্ট্রিংগুলি UTF-8 কোডিত বাইনারিজ হিসেবে থাকে। প্রতিটি অক্ষর এক থেকে চার বাইট পর্যন্ত হতে পারে। তাই, আমরা String.length/1
কল করলে, আমরা কেবল বাইট গণনা করি না; আমরা ইউনিকোড গ্রাফিমস গণনা করি, যা আমরা অক্ষর হিসেবে অনুভব করি।
ঐতিহাসিকভাবে, অনেক ভাষায় স্ট্রিং দৈর্ঘ্য অপারেশনগুলি বাইট-কেন্দ্রিক ছিল এবং এটি বহু-বাইট অক্ষরের জন্য ভালভাবে বিবেচনা করেনি। এলিক্সিরের দৃষ্টিভঙ্গি আধুনিক এবং ইউনিকোড-বান্ধব শুরু থেকেই।
এর বিকল্প হিসেবে, আপনি ম্যানুয়ালি গ্রাফিমস গণনা করতে পারেন রিকার্সন বা লুপ ব্যবহার করে, কিন্তু তা অপ্রয়োজনীয় ও অকার্যকর। String.length/1
ইতিমধ্যেই অনুকূলিত এবং উপযুক্ত।
এলিক্সিরের বাস্তবায়নে Erlang NIF (Native Implemented Function) ব্যবহার করা হয় String.length/1
এর জন্য, যা এটিকে দ্রুতগতি প্রদান করে। গ্রাফিমসের পরিবর্তে বাইট গণনা করা হয় byte_size/1
দ্বারা, যা স্ট্রিং এর বাইনারি প্রতিনিধিত্বের কাঁচা বাইটগুলি গণনা করে—যা নিম্নস্তরের অপারেশনে উপযোগী যেখানে এনকোডিং গুরুত্বপূর্ণ নয়।