簡體   English   中英

如何在擴展中快速獲取對象(自我)泛型類型?

[英]How to get object (self) generic type in extension swift?

我正在制作使用 Set 擴展名將 Set 轉換為數組的函數。 但是我無法在該擴展中獲得通用類型的 Set。 例如,如果有一個 String 類型的 Set 對象,那么 toArray() 函數應該返回一個 String ( [String] ) 數組。 我正在像這樣創建這個函數。

extension Set{
    func toArray() -> [/*What type should take*/]{
        var array = [/*What type should take*/]()
        for s in self{
            array.append(s)
        }
        return array
    }
}

// Here is what I am expecting from the above func.
var myset = Set<String>()
let arr = myset.toArray() // Should return [String]


使用Element來獲取它的 Generic 類型很簡單

extension Set{
    func toArray() -> [Element]{
        var array = [Element]()
        for s in self{
            array.append(s)
        }
        return array
    }
}


您可以使用Element來獲取元素類型,但是實際上並不需要這個擴展,因為您可以簡單地說let arr = Array(mySet)

如果您確實想使用擴展程序,您可以將其簡化為:

extension Set {
    func toArray() -> [Element] {
        return Array(self)
    }
}

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM