আমার একটি স্কালা মানচিত্র রয়েছে এবং মানচিত্রে একটি নির্দিষ্ট মান বিদ্যমান কিনা তা পরীক্ষা করতে চাই।
myMap.exists( /*What should go here*/ )
উত্তর:
আপনি কী বোঝাতে চাইছেন তার উপর নির্ভর করে বিভিন্ন বিকল্প রয়েছে।
যদি আপনি "মান" কী-মান জোড় বলতে বোঝায় তবে আপনি এর মতো কিছু ব্যবহার করতে পারেন
myMap.exists(_ == ("fish",3))
myMap.exists(_ == "fish" -> 3)
যদি আপনি কী-মান জোড়ার মান বোঝায় তবে আপনি এটি করতে পারেন
myMap.values.exists(_ == 3)
myMap.exists(_._2 == 3)
আপনি যদি কেবল কী-মান জোড়ার কীটি পরীক্ষা করতে চান , তবে
myMap.keySet.exists(_ == "fish")
myMap.exists(_._1 == "fish")
myMap.contains("fish")
নোট করুন যে যদিও টিপল ফর্মগুলি (উদাহরণস্বরূপ _._1 == "fish") খাটো হওয়ার পরে শেষ হয় তবে সামান্য দীর্ঘতর ফর্মগুলি আপনি কী হতে চান তা সম্পর্কে আরও স্পষ্ট।
আপনি মানচিত্রের মানটি বা কীটি বিদ্যমান কিনা তা জানতে চান ? আপনি যদি কীটি পরীক্ষা করতে চান তবে ব্যবহার করুন isDefinedAt:
myMap isDefinedAt key
আপনি একটি পরীক্ষা সরবরাহ করেন যে মানচিত্রের মানগুলির মধ্যে একটি পাস করবে, অর্থাৎ
val mymap = Map(9->"lolo", 7->"lala")
mymap.exists(_._1 == 7) //true
mymap.exists(x => x._1 == 7 && x._2 == "lolo") //false
mymap.exists(x => x._1 == 7 && x._2 == "lala") //true
স্ক্যালাডোকস পদ্ধতিটির বিষয়ে বলেছেন "কোনও পরিবর্তনকারী এই পরিবর্তনীয় মানচিত্রের কিছু উপাদানকে ধারণ করে কিনা তা পরীক্ষা করে।", ধরাটি হ'ল এটি দুটি পরামিতির পরিবর্তে একটি টিপল (কী, মান) গ্রহণ করে।
এই সম্পর্কে কি:
val map = Map(1 -> 'a', 2 -> 'b', 4 -> 'd')
map.values.toSeq.contains('c') //false
trueমানচিত্রে cমান থাকলে ফলন ।
আপনি যদি জেদ করে থাকেন exists:
map.exists({case(_, value) => value == 'c'})
valuesএকটি নতুন তৈরি করে Iterableযাতে আপনি সম্ভবত map.valuesIterator.contains('c')map.exists(_._2 == 'c')
উপরের উত্তরগুলিতে, নোটটি উপস্থিত রয়েছে () রয়েছে () এর তুলনায় উল্লেখযোগ্যভাবে ধীর (আমি 5000 স্ট্রিং কী রয়েছে এমন মানচিত্রের সাথে বেঞ্চমার্ক করেছি, এবং অনুপাতটি একটি সামঞ্জস্যপূর্ণ x100)। আমি স্কেলে তুলনামূলকভাবে নতুন কিন্তু আমার অনুমান বিদ্যমান () সমস্ত কী (বা কী, মান টিপল) এর উপর পুনরাবৃত্তি করছে যেখানে মানচিত্রের এলোমেলো অ্যাক্সেস ব্যবহার রয়েছে