gpt4 book ai didi

swift - 具有继承的通用类

转载 作者:可可西里 更新时间:2023-11-01 00:55:18 26 4
gpt4 key购买 nike

当我尝试执行下面的代码时,出现以下错误

error: cannot convert value of type 'X' to specified type 'X'

swift 不支持泛型继承吗?有解决办法吗?

class Parent{ }

class Child:Parent{ }

class X<T>{
var name: String?
}

var test:X<Parent> = X<Child>() //Compiler Error

最佳答案

在 Swift 中,泛型是不变的,例如任何X<A>永远不会分配给 X<B> , 无论 A 之间的继承关系如何和 B .

然而,关于数组和可选(可能还有一些其他类型),这条规则有一些异常(exception):

var array2:[Parent] = [Child]()
// same as:
var array1:Array<Parent> = Array<Child>()

var opt1:Parent? = Child()
// same as:
var opt2:Optional<Parent> = Optional<Child>(Child())

这些将编译(自 Swift 3 起)- 但这些是特殊情况,由编译器的一些硬编码规则处理。

关于swift - 具有继承的通用类,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/50814236/

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