অজানাতে একটি অ্যারে মুছুন


18

খালি, আমি একটি লুপ দিয়ে একটি অ্যারে সাফ করতে পারি, এটি খালি অ্যারে তৈরি করে যা এটি মুছার সমতুল্য।

for (key in array) delete array[key];

একটি সহজ উপায় আছে কি? আমি কী কোনও অ্যারে পুরোপুরি মুছতে পারি, যাতে ভেরিয়েবলের নামটি স্কেলারের জন্য পুনরায় ব্যবহার করা যায়?

উত্তর:


29

বাক্য গঠন

delete array

পসিক্সে বর্তমান সংস্করণগুলিতে নয়, তবে এটি কার্যত সমস্ত বিদ্যমান প্রয়োগগুলি (মূল অ্যাজক, জিএনইউ, মওক এবং ব্যাসিবক্স সহ) দ্বারা সমর্থিত। এটি পসিক্সের ভবিষ্যতের সংস্করণে যুক্ত হবে ( ত্রুটি দেখুন 0000544 )।

সমস্ত অ্যারে উপাদানগুলি সাফ করার একটি বিকল্প উপায়, যা উভয়ই পোর্টেবল এবং মান-সম্মতিযুক্ত এবং যা বিবৃতি নয় বরং একটি অভিব্যক্তি, splitসমস্ত বিদ্যমান উপাদান মুছে ফেলার উপর নির্ভর করে :

split("", array, ":")

এগুলি সহ delete array, সমস্ত ভেরিয়েবলটি জিএনইউ অ্যাওক এবং মাককে (তবে বুসিবক্স অ্যাডকে নয়) মূল অজকে একটি অ্যারে ভেরিয়েবল হিসাবে চিহ্নিত রয়েছে। আমি যতদূর জানি, একবার কোনও ভেরিয়েবল অ্যারে হিসাবে ব্যবহৃত হয়ে গেলে, এটি স্কেলার ভেরিয়েবল হিসাবে ব্যবহার করার কোনও উপায় নেই।


বিকল্প বিভাজন সমাধান সহায়ক ছিল। এসসিও ওপেনসভার 5.0.7 অ্যাডাব্লুয়ে delete arrayএকটি সিনট্যাক্স ত্রুটি হিসাবে ডেকে আশ্চর্য হয়েছিল যদিও ম্যান পৃষ্ঠাটি সাবস্ক্রিপ্টটি .চ্ছিক বলেছে। $ awk 'BEGIN { A[1] = 0; delete A; }' awk: Syntax error at line 1 of program << BEGIN { A[1] = 0; de ... >> context is BEGIN { A[1] = 0; delete >>> A; <<< awk: illegal statement at line 1 of program << BEGIN { A[1] = 0; de ... >>এটি খুঁজে পেয়ে আরও অবাক করা বিষয় ছিল যে delete array[subscript]ত্রুটি হিসাবে দেখানো না হলেও এটিও কাজ করে না, এবং এর অনেকগুলি রূপগুলি array[subscript] = ""একইভাবে অকার্যকর ছিল।
কুলগ্রিগেন

1
বা কেবলsplit("", array)
রাইনেস
আমাদের সাইট ব্যবহার করে, আপনি স্বীকার করেছেন যে আপনি আমাদের কুকি নীতি এবং গোপনীয়তা নীতিটি পড়েছেন এবং বুঝতে পেরেছেন ।
Licensed under cc by-sa 3.0 with attribution required.