美文网首页
Swift代码

Swift代码

作者: AlwaysLuckyMa | 来源:发表于2019-10-09 23:09 被阅读0次
    import UIKit
    
    // 解包:读取可选类型时,要先查看值是否为nil。这个过程叫解包
    
    let str = "hello world"
    print(str)
    
    var varName = "hello swift"
    varName = "马冲是天才!"
    print(varName)
    
    var myNumber : Int
    var myFloat : Float
    
    myNumber = 120183501007
    myFloat = 25.0
    
    //////////////////////////////////////////////////////////////////////////////
    ////////////////////////////  数据类型的声明  ///////////////////////////////////
    //////////////////////////////////////////////////////////////////////////////
    
    // 数字和bool类型
    var swiftFloat0 : Float
    var swiftFloat1 : Float64
    var swiftFloat2 : Float80
    
    // 集合类型  数组(arrays)、字典(dictionarys)、集合(sets)
    // 数组中可以存放任何类型元素 包括基础类型,结构体,和类
    var hasPet : Bool
    
    // 数组属于i敏感类型数据
    // 一个int型的数组
    //var arrayOfInts : Array<Int>    // 简洁写法同下
    var arrayOfInts : [Int]
    
    // swift基础数据类型。int float character string
    //var dic : Dictionary<String,String>  // 简洁写法同下
    var dic :[String : String]
    
    // 集合  是一个无序的集合 值必须唯一并可被哈希
    var noOrderSets : Set<Int>
    
    //////////////////////////////////////////////////////////////////////////////
    ////////////////////////////  字面量和角标   ///////////////////////////////////
    //////////////////////////////////////////////////////////////////////////////
    
    var literal = "Hello playground"   // Hello playground 为字面量
    literal = "Hello swift"
    let literal_Str = literal
    
    // 在playground中添加两个字面量
    let num = 2
    let fmStation = 91.1
    
    //////////////////////////// 数组和字典字面量 ///////////////////////////////////
    let numberArray = [1,12,35]
    let strDic      = ["no1":13 , "no2": 17]
    let strDic1     = [22:"haha" ,25:"马聪" , 26:"120183501007"]
    
    /////////////////////// 通过角标访问数组元素 字典同理 //////////////////////////////
    let getNumberArray = numberArray[2]
    let getStrDic = strDic["no1"]
    let getStrDic1 = strDic1[25]
    
    //////////////////////////////////////////////////////////////////////////////
    ///////////////////////////////  构造器   /////////////////////////////////////
    //////////////////////////////////////////////////////////////////////////////
    
    let emptyString = String()
    let emptyArratOfInts = [Int]()
    let emptySetOfFloats = Set<Float>()
    
    // 有默认值的类型
    let defaultNumber = Int()
    let defaultBool = Bool()   // 默认时 false
    
    // 类型可以有多个构造器
    let number = 42
    // String的构造器可以接收Int作为参数 然后根据int的值创建字符串
    let stringOfInt = String(number)
    
    let createSet = Set([205,105,22])
    let defaultFloat = Float()
    let createOfFloat = Float(3.1415926)
    
    
    // 类型推断
    let easyPi = 3.14    // 推断为double
    let floatFromDouble = Float(easyPi)  // 推断为float
    
    // 属性
    let emptyStrings = "1234"
    emptyStrings.isEmpty  // 判断是否为空
    emptyStrings.first
    
    // 若要检查集合是否为空,请使用其“isEmpty”属性,而不是将“count”与零进行比较。
    emptyStrings.underestimatedCount
    emptyStrings.count
    
    let countUp = ["one","one","three","four"]
    let secondElemnet = countUp[1]
    countUp.count
    countUp.last
    countUp.startIndex
    countUp.endIndex
    countUp.distance(from: 0, to: 3)  // 不知道干啥的
    
    var countingUp = countUp    // 把字符串添加到数组末尾
    countingUp.append("five")
    
    //////////////////////////////////////////////////////////////////////////////
    ////////////////////// 可选  表示变量中可能没有值 /////////////////////////////////
    //////////////////////////////////////////////////////////////////////////////
    
    var anOpeationFloat : Float?
    var anOPeationArrayOfString : [String]?
    var anOpeationArrayOpeationStrings : [String?]?
    
    var reading11 : Float
    var reading22 : Float
    var reading33 : Float
    
    var reading1 : Float?
    var reading2 : Float?
    var reading3 : Float?
    
    // 可选类型的赋值和其他类型一样
    // 解包:读取可选类型时,要先查看值是否为nil。这个过程叫解包
    reading1 = 3.0
    reading2 = 4.0
    reading3 = 5.0
    
    //////////////////////////////////////////////////////////////////////////
    ///////////////////   解包分为强制解包 和 正常解包    /////////////////////////
    
    // 下面展示强制解包 ***********
    
    // 下面例子会报错。因为可选类型需要解包
    //let avgreading = (reading1 + reading2 + reading3) / 3
    
    // **********************   强制解包存在潜在问题 , 相当于告诉编译器可选值肯定不为空,可以当作正常浮点数处理     ****************
    // 如果把 “ reading3 = 5.0 ”  注释掉就会报错
    //let avgreading1 = (reading1! + reading2! + reading3!) / 3
    
    
    // 下面展示正常解包 ***********
    if  let r1 = reading1 ,
        let r2 = reading2 ,
        let r3 = reading3
        {
            let avgNum = (r1 + r2 + r3) / 3
        }else{
            let error = "仪器报告读数为nil"
        }
    
    //////////////////////////////////////////////////////////
    ///////////////////   字典角标    /////////////////////////
    
    let nameByParkingSpace = [13:"alice" , 17:"Bob"]
    let space13Assigness : String? = nameByParkingSpace[13]
    let space42Assigness : String? = nameByParkingSpace[42]
    
    // 字典解包
    
    if let space13Assigness = nameByParkingSpace[13] {
        print("key 13 is assigned in the dictionary!")
    }else{
        print("解包失败!有空值!")
    }
    
    //////////////////////////////////////////////////////////
    ///////////////////   循环和字符串v补全    //////////////////
    
    // 0...3表示,从0到3包含3,如果是0..<3,是0到3但是不包含3
    for i in 0..<3 {
        print(i)
    }
    
    // 特殊写法
    // 如果在for循环中不需要用到下标i
    for _ in 0..<3 {
        print("_ in 0..<3 <---->hello")
    }
    
    for str in countUp {
        print(str)
    }
    
    let dict = ["a":1, "b":2, "c":3];
    for (key,value) in dict {
        print("key: \(key) value : \(value) ");
    }
    
    // 不论 i 和 string 如何调换 前面的形参都为索引值
    for (i,string) in countingUp.enumerated() {
        print("countingUp测试 ---->i:\(i) ,, string: \(string) ")
    }
    
    for item in countingUp.enumerated() {
        print("idx =\(item)");
    }
    
    // 枚举输出
    for (idx,item) in countingUp.enumerated() {
        print("下标:\(idx) 值:\(item)")
    }
    
    //跨步遍历,这个是swift另外一个特性 stride跨步  ********
    for idx in stride(from: 0, to: 10, by: 2) {
        print("idx = \(idx)");
    }
    
    let rang = 0 ..< countingUp.count
    for i in rang {
        print(i)
    }
    
    // 枚举字典元素
    for (index,dicName) in strDic1.enumerated() {
        print("index:\(index)-----value\(dicName)")
    }
    
    //////////////////////////////////////////////////////////////////////////////
    //////////////////////////   枚举和Switch  ////////////////////////////////////
    //////////////////////////////////////////////////////////////////////////////
    
    
    
    
    
    
    
    
    
    
    
    
    
    
    
    
    
    

    相关文章

      网友评论

          本文标题:Swift代码

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