美文网首页
Swift学习总结 - 1

Swift学习总结 - 1

作者: 恩莱客 | 来源:发表于2023-01-04 14:07 被阅读0次
    1. 发布于2014年WWDC,支持iOS、OS X、watchOS,结合了C和Objective-C的优点的一门新语言。
    2. 特性
    • 安全性 提供了更多安全措施,比如值使用前初始化、自动内存管理等。
    • 快速性 llvm编译框架,运行速度快。
    • 表现力 语法简单,易于阅读维护。
    • 兼容性 继承了c语言和oc的特性,并克服了C的兼容性问题。

    还有以下特点:

    • 没有宏系统,其协议和扩展源自oc
    • 采用let常量、var变量声明变量
    • 没有显示指针,而是像C#语言一样,依赖值类型/引用类型
    • 不支持强制转换
    1. Swift具有强大的命名字符集,支持代码预览,我们可以通过playground来学习swift的语法
      file - new - playground

      playground
    2. 变量和常量
      变量和常量都要有类型, 值必须与分配的类型相同,代码结尾不要求,加不加都不会报错,注释与OC相同

    var aVariable = 100
    aVariable = 50
    let string = "string"
    /** 多变量 逗号 分割 */
    var x = 0.0, y = 0.0, z = 0.0
    
    1. 类型 写法
      var 标识符:类型 = 初始值
      let 标识符:类型 = 初始值
    var name: String = "Mark"
    let x: Int = 1
    let y: Int = 2
    let z: Int = 3
    print(x + y + z)
    
    1. 字符串
      支持转义字符,多行需要在首行、尾行添加三引号,并需要删除缩进效果
    let label = "The width is "
    let width = 100
    let widthLabel = label + String(width)
    print("The width is \(width)")
    let quotation = """
    I have \(x + y + z) apples.
    And you said you
    """
    
    1. 数组、字典、集合、元组
      数组:存放相同数据类型元素,有序
    var productList = ["apple", "orange", "banana"]
    productList[1] = "purple"
    print(productList)
    productList.append("water")
    // 创建空数组
    productList = []
    print(productList)
    let shoppingList: [String] = []
    

    字典:存放key-value对元素

    var productInfo = ["name": "apple", "price": String(4)]
    productInfo["color"] = "green"
    print(productInfo)
    // 创建空字典
    productInfo = [:]
    print(productInfo)
    let occupations: [String: Float] = [:]
    

    集合:无序、不重复的相同类型元素

    let favoriteGenres: Set<String> = ["Rock", "Classical", "Hip hop"]
    

    元组:不同数据类型元素的集合

    let aturple = (21, 180, 60, "healthy", true)
    
    1. 可选类型Optional
      可选类型Optional是Swift特有的数据类型,可选类型的值可能是某个类型的值也可能是nil(表示没有值),可选类型的定义,在类型后面加“”,nil可以表示变量值缺失。
      可选项类型

    可选类型在使用的时候必须要拆包,下面提供Optional的三种使用方式:

    • 隐式拆包
      在定义可选类型的时候使用“!,后面使该可选类型的时候不需要强制解包
    let string1: String! = "Hello"
    string1.count
    
    • 强制解包
      使用可选类型变量时,在其后加“!,如果使用不合法编译器会报错。
    let string0: String? = "Hello"
    print(string0!)
    string0!.count
    // 添加保护判断,否则nil时会报错
    if string0 != nil{
        let count = string0!.count
        print(count)
    }
    
    • if-let可选绑定
      使用if let临时常量 = 可选类型 来判断可选类型是否包含值,如果包含就把值赋给临时常量,否则(可选类型为nil时)if语句判断为假。
      例1:
    var optionalName: String? = "John"
    var greeting = "Hello!"
    if let name = optionalName {
        greeting = "Hello,\(name)"
        print(greeting)
        print(name)
    }
    

    例2:

    var string5: String? =  "Marry"
    /**
     ① 使用`a ?? b`合并空值运算符的方式来解包,如果有值,则为count,如果为nil,则默认0
     使用合并控制运算符有两个条件:
     1. 表达式a必须是可选类型
     2. 表达式b必须和a的处处类型相同
     */
    if string5 != nil{
        let count = string5?.count;
        print(count ?? 0)
    }
    // 使用可选项绑定来判断可选项是否有值,如果有就赋值给临时变量。同一个if语句可以有多个可选项绑定,用, 分开即可
    // ② 使用可选项绑定
    if let tempStr = string5{
        let count = tempStr.count
        print(count)
    }
    
    1. 条件语句
    • if分支语句:
    var teamScore: Float = 0
    let personalScore = 51.0
    if personalScore > 50.0{
        teamScore += 3
    }else{
        teamScore += 1
    }
    print(teamScore)
    
    • switch分支语句:
    var vegetable = "red pepper"
    switch vegetable{
        case "celery":
            print("Add some raisins and make ants on a log.")
        case "cucumber", "watercress":
            print("That would make a good tea sandwich.")
        case let x where x.hasSuffix("pepper"):
            print("Is it a spicy \(x)")
        default:
            print("Everything tastes good in soup")
    }
    
    1. 循环语句
      for循环:
    var total = 0
    for i in 0..<4{
        total += i
    }
    print(total)
    

    不使用循环每一项的值时,可以使用下划线“_”替代变量名:

    let max = 10
    let base = 3
    for _ in 1...max{
        total += base
    }
    print(total)
    

    循环取数组值:

    let array = [1, 3, 5, 7, 9]
    var total = 0
    for num in array{
        total += num
    }
    print(total)
    

    取字典中值:

    let interestingNumbers = ["Prime": [2, 3, 5, 7, 11, 13],"Fibonacci": [1, 1, 2, 3, 5, 8],"Square": [1, 4, 9, 16, 25],
    ]
    var largest = 0
    for (_, numbers) in interestingNumbers {
        for number in numbers {
            if number > largest {
                largest = number
            }
        }
    }
    print(largest)
    

    while循环(当型循环):

    var n = 2
    while n < 100{
        n *= 2
    }
    print(n)
    

    while-repeat循环(直到型循环:循环体至少执行一次)

    var m = 2
    repeat {
        m *= 2
    } while m < 100
    print(m)
    

    相关文章

      网友评论

          本文标题:Swift学习总结 - 1

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