美文网首页
Swift 声明数组

Swift 声明数组

作者: 山杨 | 来源:发表于2024-02-20 18:51 被阅读0次

场景:声明一个数组中包含多种类型的实例,并且这些类型都遵循相同的(一个或多个)协议。
Ans:这种情况声明数组的类型可以用协议名称,多个协议之间用&符号连接。意思是只要遵守这些协议的实例都可以放在这个数组中。

1. 首先,定义两个协议:
protocol ProtocolA {  
    func doSomethingA()  
}  
protocol ProtocolB {  
    func doSomethingB()  
}

2. 然后,创建符合这两个协议的不同类型:
class ClassA: ProtocolA, ProtocolB {  
    func doSomethingA() {  
        print("Class A doing something A")  
    }  
    func doSomethingB() {  
        print("Class A doing something B")  
    }  
}    

class ClassB: ProtocolA, ProtocolB {  
    func doSomethingA() {  
        print("Class B doing something A")  
    }  
    func doSomethingB() {  
        print("Class B doing something B")  
    }  
}

struct StructC: ProtocolA, ProtocolB {  
    func doSomethingA() {  
        print("Struct C doing something A")  
    }  
    func doSomethingB() {  
        print("Struct C doing something B")  
    }  
}

3. 最后,声明并初始化一个数组,其元素类型遵守 ProtocolA 和 ProtocolB:
let mixedArray: [ProtocolA & ProtocolB] = [ClassA(), ClassB(), StructC()]  

4. 遍历数组并执行两个协议中的方法
for item in mixedArray { 
    item.doSomethingA()
    item.doSomethingB()
}

注意:这里如果使用AnyObject替代具体的协议名称虽然也不会报错,但是在写代码的时候尽量要明确数组中的实例类型或实例遵守的协议

相关文章

  • swift 声明数组

    共3个声明方法 删除数组arr.removeObjectAtIndex(1)arr.removeAllObjects()

  • 迟到的Swift入门 - 数组操作

    Swift数组操作 1. 数组的日常操作 1.0 声明数组 初始化空数组 初始化默认值的数组 2. 数组基本操作 ...

  • swift中数组操作

    数组的声明 可变关键字用var,不可变关键字用let,默认用一对[]表示 swift数组拼接操作 swift的值拷...

  • iOS开发 -- Swift之Collections容器类(六)

    数组Array 数组初始化 Swift中的数组里面存放的数据类型必须是一样的。 数组的声明方式: 数组的基本用法 ...

  • swift数组扩展

    swift数组移除元素 swift数组拷贝

  • Swift5 数组(Array)操作

    Swift数组创建 Swift获取指定位置数据 Swift数组遍历 for、map、flatMap、reduce ...

  • Arrays(数组)

    数组是存储一系列数据的结构, Swift可以根据初始化的数据, 推断元素类型(声明同时初始化) 通过索引访问数组元...

  • Swift 语言新特性总结(2)

    1、swift的Array类型可以持有任何类型的值——对象和非对象都可以。 2、声明数组主要有两种语法,数组实例也...

  • Swift-数组与字符串转换

    Swift 字符串转数组: Swift 数组转字符串:

  • Optional Map

    在数组中,我们可以用map关键字,将一个数组进行计算,从而生成一个新的数组。在Swift标准库中声明如下: 现在有...

网友评论

      本文标题:Swift 声明数组

      本文链接:https://www.haomeiwen.com/subject/kggbadtx.html