arrays - 在 Swift 中声明任何类型的数组时使用未声明的类型 'T'

标签 arrays swift swift-playground generics

我正在尝试使用任何类型 T 的数组声明一个属性。但是我收到编译器错误 - 使用未声明的类型“T”。下面是我用 2 个属性创建的类。

class Product {
 var productName: String;
 var items: Array<T>
}

请告诉我如何在 Swift 中使用泛型声明任何类型的数组。我尝试了以下选项:

{
var items: Array<T>;
var items = Array<T>();
var items = [T]();
}

最佳答案

您必须在类声明中定义泛型类型:

class Product<T> {
    var productName: String;
    var items: Array<T>
}

当然,由于该类具有未初始化的非可选变量,您必须内联初始化它们:

class Product<T> {
    var productName: String = ""
    var items: Array<T> = Array<T>()
}

使它们成为可选项:

class Product<T> {
    var productName: String?
    var items: Array<T>?
}

定义一个初始化器:

class Product<T> {
    var productName: String
    var items: Array<T>

    init(productName: String, items: Array<T>) {
        self.productName = productName
        self.items = items
    }
}

或它们的任意组合。

请注意,swift 中不需要结尾分号,除非您在同一行中放置多个语句

关于arrays - 在 Swift 中声明任何类型的数组时使用未声明的类型 'T',我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/25611659/

相关文章:

带有字典的 Swift Playground 太慢

java - 如何形成json对象

Python - 求和 4D 数组

c - 如何在创建多维数组后立即为其分配多个值 - 在 C 中?

ios - Vimeo 视频不适合 UIWebView,swift

Swift - 设备上不包含预填充的 SQLite 数据库

ios - 如何在SpriteKit中创建场景切换的无限滚动背景?

ios - Swift 中的可选项,为什么这个简单的代码不打印可选项?

swift - 如何从 Swift 中的字符串返回第一个单词?

python - 为什么将列表初始化为空而不是具有预定大小是 Pythonic 的?