zoukankan      html  css  js  c++  java
  • 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("这是个是猫类型")
                }
            }
  • 相关阅读:
    TreeList Linq
    MasterDetail Linq
    C# 事务处理
    设计模式——代理模式(Proxy Pattern)
    设计模式——装饰模式(Decorator Pattern)
    C# 调用WCF服务
    加密解密
    Effective C#高效编程(02:常量)
    切换城市功能
    DataPager控件使用
  • 原文地址:https://www.cnblogs.com/hero11223/p/13930879.html
Copyright © 2011-2022 走看看