Swift的泛型类的类型

前端之家收集整理的这篇文章主要介绍了Swift的泛型类的类型前端之家小编觉得挺不错的,现在分享给大家,也给大家做个参考。
我试图使一个泛型类型的类型如下
class Cars<T> {
  ...
}

typealias SportCars = Cars

但是我正在收到一个编译错误,参考通用类型’Cars’需要< ...>中的参数.

现在,你已经发现,你不能用泛型进行这个操作.
typealias Foo = Array
// Doesn't work: Reference to generic type 'Array' requires argument in <...>

Swift编程语言iBook章节“类型别名声明”实际上并没有说明哪些类型不能被别名.但它只是看起来像是不允许的部分类型(如没有指定占位符的泛型).

如果你觉得Swift应该做的这件事情,应该向苹果提交一个雷达(bugreport).

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

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相关文章