gpt4 book ai didi

swift - Swift 中泛型类的类型别名

转载 作者:IT王子 更新时间:2023-10-29 05:19:21 24 4
gpt4 key购买 nike

我正在尝试按如下方式创建通用类型类的类型别名

class Cars<T> {
...
}

typealias SportCars = Cars

但我收到如下编译错误 Reference to generic type 'Cars' requires argument in <...>

最佳答案

现在,正如您所发现的那样,您不能使用泛型来做到这一点。

typealias Foo = Array
// Doesn't work: Reference to generic type 'Array' requires argument in <...>

The Swift Programming Language iBook 章节 “类型别名声明” 实际上并未说明任何类型 不能 别名。但看起来部分类型(比如没有指定占位符的泛型)是不允许的。

如果您觉得 Swift 应该这样做,请向 Apple 提交 Radar(错误报告)。

在研究这个答案时,我注意到部分类型问题不仅影响typealias,而且在其他地方也可见:

let foo = Array.self
// Doesn't work: Cannot convert the expression's type 'Array<T>.Type' to type 'Array<T>.Type'
// … which is a very confusing error.

var bar: Array.Type
// Doesn't work: Reference to generic type 'Array' requires arguments in <...>

let bar: Array.Type = Array.self
// …/usr/bin/swift: Segmentation fault! :-)

如果您指定占位符类型,所有这些都有效:

typealias Foo = Array<Int> // Works
let foo = Array<Int>.self // Works

关于swift - Swift 中泛型类的类型别名,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/24723430/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com