2011-04-25 7 views
20

मेरे पास तारों की एक सरणी है। तारों के एक अपरिवर्तनीय सेट में बदलने का सबसे अच्छा तरीका क्या है?मैं एक ऐरे [स्ट्रिंग] को एक सेट [स्ट्रिंग] में कैसे परिवर्तित करूं?

मुझे लगता है कि यह एक विधि विधि है, लेकिन मुझे इसे स्कैला दस्तावेज़ों में नहीं मिल रहा है।

मैं स्कैला 2.8.1 का उपयोग कर रहा हूं।

उत्तर

41

इस विधि toSet, उदा .:

scala> val arr = Array("a", "b", "c") 
arr: Array[java.lang.String] = Array(a, b, c) 

scala> arr.toSet 
res1: scala.collection.immutable.Set[java.lang.String] = Set(a, b, c) 

कहा जाता है इस मामले toSet विधि Array के लिए मौजूद नहीं है में। लेकिन ArrayOps पर एक निहित रूपांतरण है।

ऐसे मामलों में मैं आपको Predef में देखने की सलाह दे सकता हूं। आम तौर पर आपको वहां कुछ उपयुक्त निहित रूपांतरण मिलना चाहिए। इस मामले में genericArrayOps का उपयोग किया जाएगा। genericWrapArray का भी उपयोग किया जा सकता है, लेकिन इसकी कम प्राथमिकता है।

12
scala> val a = Array("a", "b", "c") 
a: Array[java.lang.String] = Array(a, b, c) 

scala> Set(a: _*) 
res0: scala.collection.immutable.Set[java.lang.String] = Set(a, b, c) 

// OR  

scala> a.toSet 
res1: scala.collection.immutable.Set[java.lang.String] = Set(a, b, c) 
+0

एक छोटी टिप्पणी ... एकमात्र कारण मैं सेट (ए: _ *) से अधिक करना चाहता हूं .toSet है अगर मैं एक mutable सेट चाहता था, उदा। 'collection.mutable.Set (ए: _ *)' –