Swift 中的Any类型和AnyObject类型

1.在 Swift 中,Any 是一个特殊的类型,代表所有类型的实例。它可以存储任何类型的值,包括基本数据类型、对象、结构体、闭包等。

2.AnyObject,它只能存储类的实例,而不能存储结构体或枚举。

3.Any 包括所有类型(包括结构体和枚举),而 AnyObject 仅限于引用类型。

class Person {
    var name: String
    
    init(name: String) {
        self.name = name
    }
}

struct Student {
    var age: Int
    init(age: Int) {
        self.age = age
    }
}

var a: Any = 100
print(type(of: a)) //Int

var b:Any = true
print(type(of: b)) //Bool

var c:Any = Person(name: "swift")
print(type(of: c)) //Person

var d:Any = Student(age: 12)
print(type(of: d)) //Student

var e:AnyObject = Person(name: "ios")
print(type(of: e)) //Person
var mixedArray: [Any] = []

mixedArray.append(1)            // 整数
mixedArray.append("Hello")      // 字符串
mixedArray.append(3.14)         // 浮点数
mixedArray.append(true)         // 布尔值

print(mixedArray) // [1, "Hello", 3.14, true]

for item in mixedArray {
    if let number = item as? Int {
        print("整数: \(number)") // 整数: 1
    } else if let text = item as? String {
        print("字符串: \(text)") // 字符串: Hello
    } else if let value = item as? Double {
        print("浮点数: \(value)") // 浮点数: 3.14
    } else if let boolean = item as? Bool {
        print("布尔值: \(boolean)") // 布尔值: true
    }
}

注:1.在 Swift 中,as? 是用于类型转换的操作符之一,具体用于条件向下转型。

   2.as? 用于尝试将某个类型的实例转换为另一种类型(通常是它的子类型),并返回一个可选值。如果转换成功,返回目标类型的实例,否则返回 nil

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值