zoukankan      html  css  js  c++  java
  • Swfit学习笔记三:基本数据类型

     元组 Tuples
     
     定义:把多个值组合成一个复合值。元组内的值可以是任意类型,并不要求是相同类型。
     
    // 模拟一个文具套装,里面有 铅笔:2     橡皮:1     文具盒:15
    var bundle: (pencialPrice: Int, eraserPrice: Int, casePrice: Int) = (2, 1, 15 )
    var pencialPrice = bundle.pencialPrice
    var eraserPrice  = bundle.eraserPrice
    var casePrice    = bundle.casePrice
     
    var bundle2: (Int, Int, Int) = (2, 1, 15 )
    var a11 = bundle2.0
    var a22 = bundle2.1
    var a33 = bundle2.2
     
    // 元组的分解
    var (n1, n2, n3) = bundle2
     
    // 如果你只需要一部分元组值,分解的时候可以把要忽略的部分用下划线 _ 标记
    var (m1, _, m3) = bundle2
     
    元组进行比较运算的原则
     
    1. 元组中元素的个数必须相同
    2. 元组中对应位置的元素类型必须相同
    3. 元组中的元素必须可以比较,Bool 类型的值不能进行比较
     
     首先进行第一个元素的比较,如果比较出结果,则直接返回,不再进行后续比较,如果没有比较出结果,则依次进行后续比较
     
     (1, "zebra") < (2, "apple")
     (3, "apple") < (3, "bird")
     (4, "dog") == (4, "dog")
     
     
     
     
    可选类型 Optional
     
    • 定义变量时,如果指定是可选的,表示该变量可以有一个指定的类型的值,也可以为 nil;可选值只有两种:如果没有赋值,则为 nil;如果已经赋值,则为原类型的值
    • 定义变量时,在类型后面添加一个 ?表示该变量是可选的
    • 变量可选项的默认值是 nil
    • 常量可选项没有默认值,主要用于在构造函数中给常量设置初始值
    //: num 可以是一个整数,也可以是 nil,注意如果为 nil,不能参与计算
    let num: Int? = 10
    
    // Optional 可能有两个值(None / Some)
    
    // 格式(1.自动推导):var 变量名: Optional = 值
    let x: Optional = 20
    
    // 格式(2.使用泛型):var 变量名: Optional<类型> = 值
    let y: Optional<Int> = 10
    
    // 格式(3.简化格式):var 变量名: 类型? = 值
    let z: Int? = 10
    
    /*
     * 可选值在参与计算前,必须’解包 unwarping‘
     * 只有’解包(unwarp)’后才能参与计算
     * 在变量后添加一个 ‘!’,可以强行解包,即:从可选值中强行获取对应的非空值,如果真的为 nil,程序就会崩溃
     * 程序员要对每一个 ’!’ 负责
     */
    • 如果 Optional 值是 nil,不允许参与计算
    • 只有解包(unwrap)后台才能参与计算
    • 在变量后添加一个 !,可以强行解包
     
     
    注意:必须要确保解包后的值不是 nil,否则会报错
     

    //: num 可以是一个整数,也可以是 nil,注意如果为 nil,不能参与计算
    let num: Int? = 10
    
    //: 如果 num 为 nil,使用 `!` 强行解包会报错
    let r1 = num! + 100
    
    //: 使用以下判断,当 num 为 nil 时,if 分支中的代码不会执行
    if let n = num {
        let r = n + 10
    }

    unexpectedly found nil while unwrapping an Optional value

    翻译

     
    在[解包]一个可选值时发现 nil
     
     
     
    ? 与 !
     
    ?    如果出现在类型的后面,它表示将类型包装成 Optional 类型
    ?     如果出现在实例的后面,它表示的是可选链的调用
    !      如果出现在类型的后面,它表示的是隐式解析
    !      如果出现要实例的后面,它表示的是将 Optional 的实例进行拆包操作
     
  • 相关阅读:
    HDU 1982 Kaitou Kid The Phantom Thief (1)
    HDU 1984 Mispelling4
    HDU 2546 饭卡
    HDU 1009 FatMouse' Trade
    在VC 中如何隐藏一个主程序窗口
    .菜单项
    SetClassLong,GetClassLong 动态改变光标
    .窗口捕获鼠标
    .主窗口向子控件发送消息
    线段树 1698 Just a Hook 区间set更新
  • 原文地址:https://www.cnblogs.com/fanxiaocong/p/6390470.html
Copyright © 2011-2022 走看看