美文网首页
Swift基础_01数据类型和逻辑分支

Swift基础_01数据类型和逻辑分支

作者: cmfish | 来源:发表于2017-08-22 09:44 被阅读26次

    内容总结

    Swift中的数据类型

    • 整形和浮点型
    • 类型推导
    • 简单运算

    Swift中的逻辑分支

    • if分支
    • guard
    • switch分支
      • switch介绍及基本使用
      • switch的语法补充
        • switch判断浮点类型
        • switch判断字符串类型
        • switch判断区间类型

    Swift中的数据类型

    • Swift中的数据类型也有:整形、浮点型、对象类型、结构体类型等等

    • 先学习整形和浮点型

      • 整形
        • 有符号
          • Int8:有符号8位整形
          • Int16:有符号16位整形
          • Int32:有符号32位整形
          • Int64:有符号64位整形
          • Int:和平台相关(默认Int类型,相当于OC的NSInteger)
        • 无符号
          • UInt8:无符号8位整形
          • UInt16:无符号16位整形
          • UInt32:无符号32位整形
          • UInt64:无符号64位整形
          • UInt:和平台相关(常用,相当于OC的NSUInteger)(默认)
      • 浮点型
        Float :32位浮点型
        Double:64位浮点型
    • 类型推导

      • 如果在定义一个标识符的时候,有直接给该标识符进行赋值,那么可以将标识符后面的类型省略
      • 编译器会根据我们后面的赋值的类型,推导出前面标识符的类型,这个过程叫类型推导
      • 并且可以通过 option + 鼠标左键来查看标识符的类型
    //利用类型推导省略 标识符:数据类型 示例 并且Xcde编译器在你声明标识符的时候的推荐的也是省略数据类型
    let a = 24
    var b = 2.44
    let view = UIView()
    let btn = UIButton()
    
    • Swift中的基本运算

      • 在Swift中进行基本运算的时候必须保证类型一致,否则会报错
      • 因为Swift中没有隐式转换
      • 数据类型的转化
        • Int类型转成Double类型:Double(标识符)
        • Double类型转成Int类型:Int(标识符)
    let i = 20        //整形
    let d = 15.2    //Double类型
    
    //let p = m + n 错误写法 会报错
    //必须进行类型转换 让运算标识符的类型一直
    let dp = Double(i) + d // 35.2
    let ip = i + Int(d)    // 25
    

    Swift是强类型语言

    • 注意:即使同为浮点型,如果一个是Double 一个是CGFloat一样也不能直接运算
    
    let d2 :Double = 2.55
    let f :CGFloat = 3.22
    
    //let resalt = d2 + f 错误写法 会报错
    
    //正确写法
    let resault = d2 + Double(f)
    
    

    逻辑分支

    • 逻辑分支的介绍

      • 分支 if / switch / 三目运算符等判断语句
      • 通过分支语句可以控制程序的执行流程
    • if分支语句

      • 和OC中的if语句有一定的区别
      • 判断语句可以不加()
      • 在Swift的判断语句中必须有明确的真假
        • 不再有非0(nil)即真 Bool(false/true)
        • 必须有明确的Bool值
        • Bool有两个取值:false/true
     if的用法 OC的中的用法
     if(a>0){
     
     }
     if(a){//非0 即真 只要a 不是0或者空都能来到这个判断
     
     }
    
    • if 和else if 在Swift中的基本用法

    let num = 1
    if num > 0 { //可省略条件后面的() ,并且条件要明确
        print("a 大于0")
    }else if num == 0 {
        print("a =0")
    }else {
        print("a 小于 0")
    }
    
    if a != 0 {
        print("a 不等于0")
    }
    
    • guard的使用

      • guard是Swift2.0新增的语法
      • 它与if语句非常像似,它设计的初衷是提高代码的可读性
      • guard必须要带有else语句,语法如下
        • 当条件表达式为true的时候跳过else语句的内容,执行语句组(下面的)内容
        • 条件表达式为false的时候执行else语句中的内容,跳转语句一般是 return break continue throw
          语法
    guard 条件表达式 else {
     
     
         break
     }
     
     语句组
    
    例子 多重条件判断一个人能不能上网
    let age = 20
    let haveIdCard = true
    let haveMoney = true
    func canOnline (age:Int) {
        if age > 18 {
            if haveIdCard {
                if haveMoney {
                    print("可以上网")
                }else{
                   print("取钱")
                }
            }else{
                print("拿身份证")
            }
        }else{
            print("不能上网")
        }
    }
    
    canOnline(age: age)
    
    可以看出多重判断之后 该函数看起来很复杂 代码阅读性变差
    改成 guard
    func guardCanOnline (age:Int) {
        
        guard age>=18 else {
            print("不可以上网")
            return
        }
        guard haveIdCard else {
            print("回家拿身份证")
            return
        }
        guard haveMoney else {
            print("没钱上什么网")
            return
        }
        print("开心上网吧")
        
    }
    
    对比上例 实现一样的需求 这样这个判断上网的函数是不是看起来清爽很多呢?

    switch分支

    • switch的介绍
      • switch作为选择结构中必不可少的语句在Swift中地位也很重要
      • 但是苹果对switch进行了大大的加强,使其拥有其他语言中没有的特性
        • switch的简单使用
        • 和OC的区别
          • switch后面的()可以省略
          • case语句结束时可以不加break也不会产生case穿透
    • switch的基本使用
      • switch()可以省略
      • case结束可以不break
    • 基本使用补充
      • case后面可以加多个条件
      • 如果希望产生case穿透,可以在case结束时加上fallhrough
      • 可以判断多种类型
        • 浮点型
        • 字符串类型
        • 区间类型

    代码示例 基本使用

    //sex 代表性别 0 男 1 女
    let sex = 0
    
    switch sex {
    case 0:
        print("boy")
    case 1:
        print("girl")
    default:
        print("人妖啊")
    }
    
    • switch基本语法的补充
      • 在Swift中,switch后面case可以判断多个条件
      • 如果希望case结束的时候可以产生case穿透,可以在case结束后加上fallthrough
    switch sex {
    case 0,1:
        print("正常人")
        fallthrough
    default:
        print("人妖啊")
    }
    

    switch判断其他类型

    • 判断浮点类型
    let pai = 3.14
    
    switch pai {
    case 3.14:
        print("与π相等")
    default:
        print("与π不相等")
    }
    
    • 判断字符串
    let num1 = 20
    let num2 = 30
    
    let oprationStr = "+"
    
    
    switch oprationStr {
    case "+":
        print(num1+num2)
    case "-":
        print(num1-num2)
    case "*":
        print(num1*num2)
    case "/":
        print(num1/num2)
    default:
        print("非法的操作符")
    }
    
    • 判断区间
      • 区间
        • 半开区间 0~9 0..<10
        • 闭区间 0~9 0...9
    let score = 90
    
    switch score {
    case 0..<60:
        print("不及格")
    case 60..<80:
        print("及格")
    case 80..<90:
        print("良好")
    case 90...100:
        print("优秀")
        
    default:
        print("不合理的成绩")
    }
    

    while和do while循环

    • OC中的的while循环
     int a = 0 
    while (a>0) {
    a++;
    }
    while(a) {
    
    }
    
    • Swift中
      • while后面可以省略()
      • 没有非0即真的说法 与前面提到的一样Bool(true/false)
    var m = 0
    while m <10 {
            m+=1  //Swift3.0中没有了 i++ 这种语法
            print(m)
    }
    //Swift中没有了do while 语法  改成了 repeat while
    repeat {
           m-=1
          print(m)
    }while m > 0
    
    
    

    后续

    给能看到文章最后的你一个赞,肯定了乐于学习的你。愿我们在学习的路上一去不复还

    联系我,点赞也行吐槽也迎

    邮箱 ichenwanbing@163.com

    QQ 351795515

    相关文章

      网友评论

          本文标题:Swift基础_01数据类型和逻辑分支

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