zoukankan      html  css  js  c++  java
  • Swift中的类型转换

    写在前面:1,类型转换的两种方式

      2,as!和as?的用法

      3,类型判断中 is和===的用法

    类型转换方式一,利用类型的构造器进行转换

    1 let str = "5"
    2 var i = Int(str)
    3 if(i == nil){
    4     print("变量i为nil不能进行运算")
    5 }else{
    6     //由于变量i是一个可为空的变量,因此需要强制解封
    7     let rs = i! + 1
    8     print("变量i进行运算后的结果为(rs)")
    9 }

    类型转换方式二,使用as?和as!进行转换

     1 class A {
     2     func am(){
     3         print("am method")
     4     }
     5 }
     6 class B: A {
     7     func bm() {
     8         print("bm method")
     9     }
    10 }
    11 class C {
    12 
    13 }
    14 
    15 let ins: A = B()
    16 let insb1 = ins as? B
    17 let insb2 = ins as! B
    18 
    19 //使用as?进行转换时,若转换失败则会返回nil
    20 if insb1 == nil {
    21     print("change failed..(insb1)")
    22 }else{
    23     print("change success")
    24     insb1?.am()
    25 }

    注意:使用as?进行转换时,若转换失败则会返回nil

     1 class A {
     2     func am(){
     3         print("am method")
     4     }
     5 }
     6 class B: A {
     7     func bm() {
     8         print("bm method")
     9     }
    10 }
    11 class C {
    12 
    13 }
    14 
    15 let ins: A = B()
    16 let insb1 = ins as? B
    17 let insb2 = ins as! B
    18 
    19 if insb2 == nil {
    20     //这个分支将永远不会被执行
    21     print("change failed..(insb2)")
    22 }else{
    23     print("change success")
    24     insb2.am()
    25 }

    注意:使用as!进行转换时,要么转换成功,若失败程序将会产生异常

    类型判断:is

    1 //判断的是两个对象的类型是否一致,因此下面代码if条件满足
    2 if ins is B  {
    3     print("is b")
    4 }

    类型判断:===

    1 //判断的是两个对象所引用的内存地址是否相同,因此下面代码无输出
    2 let ins3 = B()
    3 let ins4 = B()
    4 let ins5 = ins3
    5 if ins3 === ins4 {
    6     print("true...")
    7 }
  • 相关阅读:
    Web开发之编码与解码、签名、加密与解密
    深入解析单例线程安全问题
    PL/SQL&存储过程||存储函数&触发器
    oracle
    子查询中的NULL问题
    springmvc适配器的应用
    MySQL
    Django rest framework(5)----解析器
    Django rest framework(4)----版本
    1. Django每日一码 之原生View源码
  • 原文地址:https://www.cnblogs.com/1016882435AIDA/p/6097745.html
Copyright © 2011-2022 走看看