arrays - 返回不透明类型的数组
问题描述
可以退货some [T]
吗?
protocol P {
associatedtype X
func method() -> [X]
}
class Imp: P {
typealias X = Int
func method() -> some [Int] {
return [1]
}
}
上面的代码产生错误“‘不透明’类型必须仅指定‘Any’、‘AnyObject’、协议和/或基类”
解决方案
这是不可能的,但那是因为它没有任何意义。some T
表示“符合 T 的特定具体类型,在编译时由返回函数知道,但调用者不知道。” [Int]
是调用者已知的类型。它没有什么“不透明”的。这等同于:
func method() -> [Int] { ... }
推荐阅读
- .net-core - Azure DevOps Pipeline 上的 Nuget 还原失败
- sql - 将时间戳转换为日期时间
- java - 如何在 Java 函数中将类作为参数发送?
- r - 通过使用行和列的索引向量从数据框中提取值?
- javascript - 如何使用 jquery 附加 HTML 模板
- yajra-datatable - 我不确定如何使用 Yajra 的多文件上传字段“uploadMany”
- python - 如何制作一个秒表,它会从按下某个按钮 (a) 开始,然后在按下某个按钮 (z) 后停止
- symfony - 为什么 queryBuilder 中的 addSelect() 会改变我的查询结果
- javascript - Vue.JS:除非我打开开发工具,否则变量不会更新
- here-api - OAuth1 是大规模矩阵 API 的正确签名过程吗?