swift开发之--可选类型说明,类型判断 is 与类型转换 as

1、可选类型

可选类型表示一个变量可能有值,也可能没有值(nil)。

声明的方式是 数据类型+问号

要使用一个可选类型的变量时,要在后面加感叹号 “!” 

//swift可选类型说明
var islog:Int?  //声明一个可选类型,默认值为nil
if islog == nil{
     print("你有多高?")
}else{
     print("你有\(islog!)高。")
}
islog = 22 //给可选类型赋值

2、类型判断 is 与类型转换 as

//基类,动物
class Animal{
    
}

//狗类
class Dog: Animal {
    
}

//猫类
class Cat: Animal {
    
}

2.1 使用is 来做类型的检查(is也可以用来检查某个类是否遵循了某个协议)

let dog = Dog()
let cat = Cat()
var arr = [dog,cat]
        
for animal in arr {
    if animal is Dog {
         print("这是个狗")
     }else if animal is Cat{
         print("这个是猫")
   }
}

2.2 用as来做类型的转换(如果不确定类型转换能否成功,可以在as后面加问号“?”)


let dog = Dog()
let cat = Cat()
var arr = [dog,cat]
for animal in arr {
    if let m = animal as? Dog {
         print("这个是狗")
     }else if let w = animal as? Cat{
         print("这个是猫")
    }
}

3、AnyObject与Any的区别

3.1 AnyObject:代表任何class类型的对象实例

class Dog{
}
 
class Cat{
}
 
let dog = Dog()
let cat = Cat()
var animals:[AnyObject] = [dog,cat]

for animal in animals {
     if let m = animal as? Dog {
          print("这是个狗")
     }else if let w = animal as? Cat{
          print("这是个猫")
     }
}

3.2 Any:范围更广,代表处函数外任何类型的实例

class Dog{
}
 
class Cat{
}

var arrs:[Any] = [Any]()
arrs.append(1)
arrs.append("hero11223.com")
arrs.append(Dog())
arrs.append(Cat())
        
        for any in arrs{
            switch any {
                case let any as Int:
                    print("这是个Int类型")
                case let any as String:
                    print("这是个String类型")
                case let any as Dog:
                    print("这是个狗类型")
                case let any as Cat:
                    print("这是个猫类型")
                default:
                    print("这是个是猫类型")
            }
        }

 

posted @ 2020-11-05 11:51  稻草人11223  阅读(435)  评论(0编辑  收藏  举报
返回顶部