美文网首页iOS开发
Swift语法学习(区间、变量、元组、分支)

Swift语法学习(区间、变量、元组、分支)

作者: Lxyang | 来源:发表于2016-09-07 17:26 被阅读55次

    1、常量与变量

    • let:声明一个常量,一旦设定就不能改变。
    • var: 声明一个变量,变量的值可以随便更改的。
      使用原则:为保证数据的安全性尽量先用 let,只有需要改变的时候才使用 var

    常量

    /*
    常量定义格式
    * 声明符号 常量名称: 类型标注
    * let number: Int
    */
    
    let number: Int = 10
    //number = 9//常量不能改变
    
    

    定义变量

    /*:
    定义变量格式
    * 声明符号 变量名称: 类型标注
    * var number: Int
    * 特点: 变量的值可以随意更改
    * 注意: 一般来说你很少需要写类型标注。如果你在声明常量或者变量的时候赋了一个初始值,Swift可以推断出这个常量或者变量的类型
    */
    var number1: Int = 9
    number1 = 8
    
    

    2、类型推断

    类型安全

    • Swift 是一个类型安全(type safe)的语言, 它会在编译你的代码时进行类型检查(type checks),并把不匹配的类型标记为错误。这可以让你在开发的时候尽早发现并修复错误
    • swift 对数据类型要求异常严格, swift 中任何时候,都不会做 隐式转换,如果要对不同类型的数据进行计算,必须显示类型转换

    注意:

    • 结合数字类常量和变量不同于结合数字类字面量。字面量8可以直接和字面量3.1415926相加,因为数字字面量本身没有明确的类型。它们的类型只在编译器需要求值的时候被推测
    • Double和CGFloat也需要转换

    转换示例

    let number4 = 7
    let number5 = 3.0
    //let result = number4 + number5//不能这样,因为类型不一至
    //强制转换
    let result = Double(number4) + number5
    
    //真实的数值(字面量)本身没有明确的类型,它们的类型只在编译器需要求值的时候被推测.
    //任何变量都可单独与字面量想加,不会产生类型冲突
    let result1 = number5 + 7
    //字面量与字面量间也可相加
    let sum = 9.7 + 2
    
    //注意
    //Swift中,Double与float CGFloat都是不同类型的,不能相加,要强制转换
    let point = CGPointMake(2, 9)
    let x: CGFloat = point.x
    let temp = 9.2//Double类型
    let sumValue = temp + Double(point.y)//把CGFloat转换成Double类开
    

    3、元组

    • 元组(tuples)把多个值组合成一个复合值
    • 将多个相同或者不同类型的值用一个小括号括起来就是一个元祖
    • 元组内的值可以是任意类型,并不要求是相同类型
    • 作为函数返回值时,元组非常有用,可以用来返回多值

    注意:

    • 元组在临时组织值的时候很有用,但是并不适合创建复杂的数据结构。如果你的数据结构并不是临时使用,请使用类或者结构体而不是元组
    //创建元组数据
    let tuples = (9.3,2,3)
    //访问,通过下标
    tuples.0
    tuples.1
    
    //指定元素名称
    let tuple = (a: 2.3,b: 9)
    tuple.a
    tuple.b
    
    //:分解元素
    let (intValue, doubleValue) = (4, 3.14)
    intValue
    doubleValue
    

    4、 区间判断

    判断区间(...与..<这两个字运算符 不能有空隔)

    • 闭区间: 0...10 取值范围 0~10 包含头包含尾
    • 半闭区间: 0..<10 取值范围 0~9 包含头不包含尾
    //let range = 0..<18//半闭区间
    //let range = 18..<30
    let range = 18...20//闭区间
    

    5、分支(if/三目运算/switch)

    5.1 分支if

    • 只能以Bool作为条件语句Swfit中逻辑值只有两个true/false,如果你在需要使用Bool类型的地方使用了非布尔值,Swift 的类型安全机制会报错
    • 条件语句不需要加()
    • {}不能省略
    • Swift中if分支的模式可以使用where语句来判断额外的条件
    • 其它和OCif一样
    let number = 10
    if number == 10 {
        print(number)
    }
    
    if number >= 10 && number <= 20 {
        print("number在10和20之间")
    }
    

    5.2 三目运算符

    • 三目运算符的特殊在于它是有三个操作数的运算符, 它简洁地表达根据问题成立与否作出二选一的操作
    • 格式:问题? 答案1 : 答案2
    • 注意:过度使用三目运算符会使简洁的代码变的难懂。我们应避免在一个组合语句中使用多个三目运算符
    let value = 2
    //?与右括号之间用空格隔开,不然会报错.
    //书写,每个字符间尽量都隔开
    let result = (value > 1) ? 3 : 9
    

    5.3 Switch

    • case后面可以不添加break,不会贯穿
    • Swift中如果想贯穿必须使用fallthrough
    • Swift中只有满足所有条件才能忽略default,OC中可以不写default
    • OC中default位置可以随便放,Swift不可以
    • OC中在case中定义变量需要加大括号, 否则作用域混乱, Swift不用加大括号
    • Swift中的switch可以判断字符串区间元祖
    • Swift中case 分支的模式可以使用where语句来判断额外的条件
    示例1- Switch常规判断
    let age = 6
    switch age {
    case 2,6://case中可以包含多个条件
        print("儿童")
    case 12:
        print("小学")
    case 18:
        print("成年")
    case 20:
        fallthrough//穿透
    case 24:
        print("可以结婚了")
    //Swift中每一个 case 分支都必须包含至少一条语句
    default:
        print("other")
    
    }
    
    示例2- Switch判断元组
    let point = (50, 50)
    switch point {
    case (0, 0):
        print("原点")
        
    case (50, 50):
        print("中点")
        
    case (100, 100):
        print("右下角")
    default:
        print("other")
        
    }
    
    示例3- 判断区间
    let range = 18...20//闭区间
    
    switch range {
        //    case 0..<18:
        //        print("未成年")
        //    case 18..<30:
        //        print("成年人")
        //    default:
        //        print("老炮")
    case 0...17:
        print("未成年")
    case 18...30:
        print("成年人")
    default:
        print("老炮")
    }
    
    示例4- 判断字符或字符串
    let rank = "A"
    switch rank {
        //    case "A":
        //        fallthrough
        //    case "B":
        //        print("还可以")
    case "A", "B":
        print("还可以")
    case "C":
        print("差")
    default:
        print("回家吧")
    }
    

    相关文章

      网友评论

        本文标题:Swift语法学习(区间、变量、元组、分支)

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