加入收藏 | 设为首页 | 会员中心 | 我要投稿 李大同 (https://www.lidatong.com.cn/)- 科技、建站、经验、云计算、5G、大数据,站长网!
当前位置: 首页 > 百科 > 正文

Swift的泛型类的类型

发布时间:2020-12-14 05:37:20 所属栏目:百科 来源:网络整理
导读:我试图使一个泛型类型的类型如下 class CarsT { ...}typealias SportCars = Cars 但是我正在收到一个编译错误,参考通用类型’Cars’需要 ...中的参数. 现在,你已经发现,你不能用泛型进行这个操作. typealias Foo = Array// Doesn't work: Reference to gener
我试图使一个泛型类型的类型如下
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

(编辑:李大同)

【声明】本站内容均来自网络,其相关言论仅代表作者个人观点,不代表本站立场。若无意侵犯到您的权利,请及时与联系站长删除相关内容!

    推荐文章
      热点阅读