ios - 如何强制将结构从超类型转换为新类型?
问题描述
从下面的代码中,我创建了 struct 类型的实例。
问题是我想创建包含任何带有supernoob
协议的结构的数组。
但我不知道如何将其从祖先类型 ( supernoob
) 转换为noob
类型,我无法在不进行转换的情况下访问 ( var pro
)。
在使用类时我可以很容易地转换它,但我不知道 struct 。
import UIKit
protocol supernoob{
func superdoNoob()
var supernub:String { get set }
}
struct noob: supernoob{
var supernub: String
func superdoNoob() {
}
var pro:String
}
struct spaceShip{
var mynoob : supernoob
}
let flyAlien = spaceShip(mynoob: noob(supernub: "choopa", pro: "PO"))
let ufo = spaceShip(mynoob: noob(supernub: "choopa", pro: "PO"))
let array = [flyAlien,ufo]
ufo.mynoob as? noob
解决方案
只需通过以下方式检查是否可以进行演员表if let...
for item in array {
if let noob = item.mynoob as? noob {
print(noob.pro)
}
}
推荐阅读
- javascript - 在同一页面中提交 PHP 表单,包括侧导航菜单
- sql - 如何在 SQL Server 中创建为每个唯一组重置的移动平均值?
- github - Github Action:将长命令拆分为多行
- android - Flutter应用开发中的依赖问题
- javascript - 单击时将按钮值添加到数据
- r - x行的滑动数据集R
- laravel - 断言 Laravel 命令在测试中被调用
- c# - 将文件上传到服务器时出现“System.Web.HttpException”类型的异常
- laravel - htmlspecialchars() 期望参数 1 是字符串,我的代码中给出的对象
- c - 在 uint64 中对 38 位进行基数排序?