উত্তর:
আপনি Set
কেবলমাত্র দিয়ে একটি প্রদত্ত সুইফট থেকে সমস্ত উপাদান সহ একটি অ্যারে তৈরি করতে পারেন
let array = Array(someSet)
এর কারণ হল কাজ করে Set
কে কনর্ফাম করে SequenceType
প্রোটোকল এবং একটি Array
একটি ক্রম সঙ্গে সক্রিয়া করা যেতে পারে। উদাহরণ:
let mySet = Set(["a", "b", "a"]) // Set<String>
let myArray = Array(mySet) // Array<String>
print(myArray) // [b, a]
NSSet
দেওয়া হয়। প্রশ্নটি ছিল একটি সুইফ্ট সম্পর্কে Set
।
সবচেয়ে সহজ যদি , সুইফট 3, আপনি ব্যবহার করতে পারেন Array
'র init(_:)
সূচনাকারী একটি পেতে Array
A থেকে Set
। init(_:)
নিম্নলিখিত ঘোষণা আছে:
init<S>(_ s: S) where S : Sequence, Element == S.Iterator.Element
একটি অনুক্রমের উপাদানগুলি সহ একটি অ্যারে তৈরি করে।
ব্যবহার:
let stringSet = Set(arrayLiteral: "car", "boat", "car", "bike", "toy")
let stringArray = Array(stringSet)
print(stringArray)
// may print ["toy", "car", "bike", "boat"]
তবে , এছাড়াও আপনি প্রতিটি উপাদান কিছু অপারেশন সম্পাদন করতে চান তাহলে আপনার Set
এটি একটি মধ্যে রূপান্তর যখন Array
, আপনি ব্যবহার করতে পারেন map
, flatMap
, sort
, filter
এবং অন্যান্য কার্মিক দ্বারা উপলব্ধ পদ্ধতি Collection
প্রোটোকল:
let stringSet = Set(["car", "boat", "bike", "toy"])
let stringArray = stringSet.sorted()
print(stringArray)
// will print ["bike", "boat", "car", "toy"]
let stringSet = Set(arrayLiteral: "car", "boat", "car", "bike", "toy")
let stringArray = stringSet.filter { $0.characters.first != "b" }
print(stringArray)
// may print ["car", "toy"]
let intSet = Set([1, 3, 5, 2])
let stringArray = intSet.flatMap { String($0) }
print(stringArray)
// may print ["5", "2", "3", "1"]
let intSet = Set([1, 3, 5, 2])
// alternative to `let intArray = Array(intSet)`
let intArray = intSet.map { $0 }
print(intArray)
// may print [5, 2, 3, 1]
যোগ :
সুইফ্টের নং আছে সেট এবং অভিধানের জন্য সংজ্ঞায়িত অর্ডার that সেই কারণে অপ্রত্যাশিত ফলাফল পেতে বাধা দেওয়ার জন্য আপনার বাছাই করা () পদ্ধতিটি ব্যবহার করা উচিত যেমন আপনার অ্যারে ["a", "বি"] বা "" বি "," এ "এর মতো হতে পারে "] এবং আপনি এটি চান না।
এটি ঠিক করতে:
সেট জন্য
var example:Set = ["a","b","c"]
let makeExampleArray = [example.sorted()]
makeExampleArray
ফলাফল: ["ক", "খ", "গ"]
বাছাই ছাড়াই ()
এটা হতে পারে:
["a","b","c"] or ["b","c","a",] or ["c","a","b"] or ["a","c","b"] or ["b","a","c"] or ["c","b","a"]
সাধারণ গণিত: 3! = 6
আমি একটি সাধারণ এক্সটেনশন তৈরি করেছি যা আপনাকে সুইফট ৪.০ এ Array
সম্পত্তি হিসাবে একটি অরসেটেড দেয় ।Set
extension Set {
var array: [Element] {
return Array(self)
}
}
যদি আপনি একটি সাজানো অ্যারে চান, আপনি হয় অতিরিক্ত গণিত সম্পত্তি যুক্ত করতে পারেন, বা আপনার প্রয়োজন অনুসারে বিদ্যমানটি সংশোধন করতে পারেন।
এটি ব্যবহার করতে, কেবল কল করুন
let array = set.array
সুইফট ২.x এর উচ্চতর উত্তর এবং উচ্চতর (সংগ্রহের ধরণগুলির বিষয়ে সুইফ্ট প্রোগ্রামিং ভাষা নির্দেশিকা থেকে) মনে হয় সেট সেটের এন্ট্রিগুলিতে পুনরুক্তি ঘটে:
for item in myItemSet {
...
}
বা, "সাজানো" পদ্ধতিটি ব্যবহার করতে:
let itemsArray = myItemSet.sorted()
দেখে মনে হচ্ছে সুইট ডিজাইনাররা অলবজেক্টগুলিকে অ্যাক্সেস মেকানিজম হিসাবে পছন্দ করেননি কারণ সেটগুলি সত্যই অর্ডার করা হয়নি, সুতরাং তারা নিশ্চিত করতে চেয়েছিল যে আপনি কোনও সুস্পষ্ট অর্ডার প্রয়োগ না করেই কোনও অ্যারে বেরিয়েছেন না।
আপনি যদি বাছাইয়ের ওভারহেড না চান এবং অর্ডারটির বিষয়ে যত্ন না রাখেন তবে আমি সাধারণত মানচিত্র বা ফ্ল্যাটম্যাপ পদ্ধতি ব্যবহার করি যা অ্যারেটি বের করার জন্য কিছুটা দ্রুত হওয়া উচিত:
let itemsArray = myItemSet.map { $0 }
যা সেট ধরণের ধরণের অ্যারে তৈরি করবে, যদি আপনার এটি নির্দিষ্ট ধরণের অ্যারে হওয়ার প্রয়োজন হয় (বলুন, পরিচালিত অবজেক্ট সম্পর্কের সেট থেকে এনটাইটেলস যা টাইপিত সেট হিসাবে ঘোষিত নয়) আপনি কিছু করতে পারেন:
var itemsArray : [MyObjectType] = []
if let typedSet = myItemSet as? Set<MyObjectType> {
itemsArray = typedSet.map { $0 }
}
myItemSet.sorted()
উপাদান যে প্রয়োজন Comparable
। - উভয়ই সেটের সমস্ত উপাদান গণনা করে একটি অ্যারে তৈরি করে myItemSet.map { $0 }
যেমন একই ফলাফল উত্পাদন করা উচিত Array(myItemSet)
। উত্তরোত্তর এখনও আমার জন্য কাজ করে, আপনার উপরের মন্তব্য উপর কিছু বিশদ প্রশংসা করা হবে।
এই পদ্ধতিটি কল করুন এবং আপনার সেট পাস
func getArrayFromSet(set:NSSet)-> NSArray {
return set.map ({ String($0) })
}
এটার মত :
var letters:Set = Set<String>(arrayLiteral: "test","test") // your set
print(self.getArrayFromSet(letters))
let array = Array(someSet)
সুইফট 2