美文网首页
Swift-基础

Swift-基础

作者: yytmzys | 来源:发表于2018-11-17 16:41 被阅读0次
    1. 声明常量和变量
    let maxNum = 1000  // 声明常量
    //maxNum = 1001        // 不可变
    
    var index = 2               // 声明变量
    index = 3                       // 可变
    
    var x = 1, y = 2, z = 3  // 同时声明多个值, 逗号分隔
    // Type inference 自动判断值的类型, 固定为初值类型
    //x = "hello"                    
    var s = "hello"
    
    let website: String = "www.imooc.com"  // 显式声明类型
    var a, b, c: Double       // 同时显式声明多个变量
    
    
    1. 整形
    var imInt: Int = 80
    Int.max
    Int.min
    
    //imInt = 99999999999999999999 编译时报错
    
    var imUIntf: UInt = 80
    UInt.max  // 无符号整形, 不能存储负数
    UInt.min  // 最小是0,
    
    
    Int8.max
    Int8.min
    UInt8.max
    UInt8.min
    
    Int16.max
    Int16.min
    UInt16.max
    UInt16.min
    
    Int32.max
    Int32.min
    UInt32.max
    UInt32.min
    
    Int64.max
    Int64.min
    UInt64.max
    UInt64.min
    
    let decimalInt: Int = 17       // 十进制
    let binaryInt: Int  = 0b10001  // 二进制
    let octalInt: Int   = 0o21     // 八进制
    let hexInt: Int     = 0x11     // 十六进制
    
    let bigNum1 = 1_000_000         // 下划线分隔大数字, 自由分隔位置
    let bigNmu2 = 1_00_0000         //
    
    /*  浮点数,小数 */
    let imFlouat: Float  = 3.1415926 // 3.141593
    let imDouble: Double = 3.1415926 // 3.1415926
    
    let x = 3.1415926 // 自动判定类型为 Double
    var a = 1.25e10   // 1.25 乘以 10 个 10
    var b = 1.25e-8   // 1.25 除以 8 个 10
    var c = 1_000_000.000_000_1 // 下划线分隔, 增强可读性
    
    /* 类型转换 */
    let x: UInt16 = 100
    let y: UInt8  = 20
    //x + y  不支持隐式类型转换, 只能显式转换, 要求严格, 规避错误
    let m = x + UInt16(y)
    
    let w:Float = 3         // 3为浮点数, 但未自动转换类型
    //let v:Int   = 3.0     // 3.0判断为浮点数, 不能赋值给Int值 v
    let v:Int   = Int(3.0)
    
    /* 布尔类型 简单if */
    let imTrue:Bool  = true
    let imFalse      = false
    let a = 1
    
    if imTrue {
        print("I'm true")
    }else{
        print("I'm false")
    }
    
    if 1{   // 报错, 1 不在作为true被执行, 对比其他语言1=true, false=0, 'Int' is not convertible to 'Bool'
        print("执行")
    }
    
    /* Touple 元祖 */
    // 将任意个不同的值集合成一个数据, 不同的值可以是不同类型, 小括号中书写数据
    var point = ( 5 , 2)
    var ( x , y) = point
    x        // 访问元祖的值, 方式1
    point.0  // 访问元祖的值  方式2
    
    var httpResponse:(Int , String) = (404 , "Not Found!")  //  显式声明元祖数据
    
    let point2:(x: Int, y:Int ) = (3 , 2) // 声明元祖 指定名称1
    let point3 = (x: 3 , y: 2)            // 声明元祖 指定名称2
    
    let (_ , httpResult) = httpResponse   // 使用下划线忽略元祖其他值
    httpResult
    
    /* 命名方式 = 首字母大写, 对齐方式 = 名称+类型+值 各自对齐  */
    let imInt:    Int    = 3
    let imFloat:  Float  = 3.14
    let imDouble: Double = 3.1415926
    let imBool:   Bool   = true
    let imString: String = "Hello, Swift:)"
    
    var 名字 = "wangpl"        // 常量, 变量名字非常开放, uicode编码都可以
    print("我的名字是" + 名字)
    
    var 😀 = "smile"
    print(名字 + 😀)
    
    /* print输出方式 */
    let x = 1, y = 2, z = 3 , b = true
    print(x,y,z, b)                       // 输出不同值时, 自带空格分隔符和尾换行
    print(x , y , z , separator:",")      // separator表示重置/替换 输出不同值时替换的分隔符
    print(x , y , z , terminator:":)")    // separator表示重置/替换 尾换行
    print("\(y) * \(z) = \(y*z)")         // 双引号里插入 \() ,表示将相应的值 放在该位置
    
    /*  可选类型  */
    let possilebNumber  = "123"
    let convertedNumber = Int(possilebNumber)  // 尝试将一个 String 转换成 Int, 此时 convertedNumber 的类型是可选类型 Int?
    
    // nil    Swift 中是一个确定的值,用来表示值缺失, 任何类型的可选状态都可以被设置为 nil,不只是对象类型。
    //        OC    中, nil是一个空指针,  指向不存在对象的指针
    var serverResponseCocde: Int? = 404
    serverResponseCocde = nil
    var a = 10  // 声明一个Int a, 后赋值 nil , 报错 Nil cannot be assigned to type 'Int'
    //a = nil
    var b: String? // 此时 b 的值自动设为 nil
    
    // if 语句及强制解析
    if convertedNumber != nil { // 如果可选类型有值, 它将不等于 nil
        print("convertedNumber有值") // 输出 有值
    }
    // 强制解析: 当确定可选类型有值时, 可以在可选类型名字后面加一个感叹号 ! 来获取值, 这个惊叹号表示"我知道这个可选有值, 请使用它"
    if convertedNumber != nil {
        print("\(convertedNumber!)") // 输出 123
    }
    
    // 可选绑定 (optional binding),  用来判断可选类型是否包含值, 如果包含就把值赋给一个临时常量/变量,
    // 可选绑定可以用在if 和 while语句中, 这条语句不仅可以用来判断可选类型中是否有值, 同时可以将可选类型中的值赋给一个常量或者变量
    if let actualNumber = Int(possilebNumber) {
        actualNumber // 值为 123
    }else{
        print("无")
    }
    // 你可以包含多个可选绑定或多个布尔条件在一个 if 语句中, 只要使用逗号分开就行. 只要有任意一个可选绑定的值为 nil, 或者任意一个布尔条件为false, 则真个 if 条件判断为false, 这时你就需要使用嵌套if条件语句来处理, 如下所示
    if let firstNumber = Int("4"), let secondNumber = Int("42"), firstNumber < secondNumber && secondNumber < 100{
        print("\(firstNumber) < \(secondNumber) < 100")  // 输出
    }
    
    if let firstNumber = Int("4") {
        if let secondNumber = Int("42") {
            if firstNumber < secondNumber && secondNumber < 100 {
                print("\(firstNumber) < \(secondNumber) < 100")
            }
        }
    }
    // 输出 "4 < 42 < 100"
    
    
    // 隐式解析 , 自动解析可选类型
    let str1: String? = "An optional string"
    let str2: String  = str1! // 需要感叹号来获取值
    
    let str3: String! = "An implicitly unwrapped optional string"
    let str4: String  = str3  // 不需要感叹号
    // 如果一个变量可能变成 nil 的话, 请不要使用隐式解析可选类型
    
    
    

    相关文章

      网友评论

          本文标题:Swift-基础

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