作者热门文章
- Java 双重比较
- java - 比较器与 Apache BeanComparator
- Objective-C 完成 block 导致额外的方法调用?
- database - RESTful URI 是否应该公开数据库主键?
我正在尝试返回 TransactionItemViewModel
的专用类型 DepositItemViewModel
但出现编译错误:无法将 DepositItemViewModel 转换为返回类型 TransactionItemViewModel .
Cannot convert DepositItemViewModel to return type TransactionItemViewModel
这是我的类声明:
class Deposit: Transaction
class TransactionItemViewModel<T: Transaction>
class DepositItemViewModel: TransactionItemViewModel<Deposit>
最佳答案
使用协议(protocol)
protocol P{}
class A: P{}
class B<T: P>{}
class C:B<A>{}
func f(o: AnyObject)->B<P> {
return C()
}
给你
error: using 'P' as a concrete type conforming to protocol 'P' is not supported
使用类
class P{}
class A: P{}
class B<T: P>{}
class C:B<A>{}
func f(o: AnyObject)->B<P> {
return C()
}
给你
error: cannot convert return expression of type 'C' to return type 'B<P>'
两种情况下的返回类型都必须是 B<A>
在您的情况下,您必须将返回类型更改为 TransactionItemViewModel<Deposit>
关于Swift 不接受泛型特化作为返回类型,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/44249307/
关闭。这个问题不符合Stack Overflow guidelines .它目前不接受答案。 我们不允许提问寻求书籍、工具、软件库等的推荐。您可以编辑问题,以便用事实和引用来回答。 关闭 4 年前。
正如您在 this travis.yml 中看到的那样文件,我的代码依赖于一些第三方库,我在构建项目之前将它们安装在远程系统上。 Travis 每次推送提交时都会下载并构建这些库,这可以避免吗?我的意
我是一名优秀的程序员,十分优秀!