আমি জানি এটি একটি পুরানো পোস্ট, তবে আমি উত্তরোত্তর জন্য কিছু যুক্ত করতে চেয়েছিলাম। আপনার কাছে থাকা সমস্যাটি হ্যান্ডল করার সহজ উপায় হ'ল আরও একটি টেবিল তৈরি করা, মান থেকে কী।
অর্থাত্ আপনার 2 টি টেবিল রয়েছে যা একই মান, একটি নির্দেশক এক দিক, অন্যটি নির্দেশ করছে।
function addValue(key, value)
if (value == nil) then
removeKey(key)
return
end
_primaryTable[key] = value
_secodaryTable[value] = key
end
function removeKey(key)
local value = _primaryTable[key]
if (value == nil) then
return
end
_primaryTable[key] = nil
_secondaryTable[value] = nil
end
function getValue(key)
return _primaryTable[key]
end
function containsValue(value)
return _secondaryTable[value] ~= nil
end
তারপরে আপনি নতুন টেবিলটিতে কী'র উপাদানটি আছে কিনা তা জানতে জিজ্ঞাসা করতে পারেন। এটি অন্যান্য সারণীর প্রতিটি মান দিয়ে পুনরাবৃত্তি করার প্রয়োজনকে বাধা দেয়।
যদি এটির সক্রিয় হয়ে যায় যে আপনি আসলে 'এলিমেন্ট' কী হিসাবে ব্যবহার করতে পারবেন না, কারণ এটি উদাহরণস্বরূপ স্ট্রিং নয়, তারপরে একটি চেকসাম বা tostring
উদাহরণস্বরূপ এটিতে যুক্ত করুন এবং তারপরে কীটি ব্যবহার করুন।
আপনি কেন এটা করতে চান? যদি আপনার টেবিলগুলি খুব বড় হয় তবে প্রতিটি উপাদান দিয়ে পুনরাবৃত্তি করার সময়টি উল্লেখযোগ্য হবে, আপনাকে প্রায়শই এটি করা থেকে বিরত করে। অতিরিক্ত মেমরি ওভারহেড তুলনামূলকভাবে ছোট হবে, কারণ এটি একই বস্তুর 2 টি অনুলিপি না করে একই পয়েন্টে 2 পয়েন্টার সংরক্ষণ করবে। যদি আপনার টেবিলগুলি খুব ছোট হয়, তবে এটি অনেক কম পরিমাণে বিবেচিত হবে, অন্য মানচিত্রের অনুসন্ধানের চেয়ে এটি পুনরাবৃত্তি করা আরও দ্রুত হতে পারে।
প্রশ্নের শব্দগঠন অবশ্য দৃ strongly়ভাবে পরামর্শ দেয় যে আপনার সাথে মোকাবেলা করার জন্য প্রচুর আইটেম রয়েছে।