美文网首页
swift 学习笔记

swift 学习笔记

作者: 小明2021 | 来源:发表于2017-10-09 17:04 被阅读19次
    一:数组交换其中任意两个元素
     // 交换数组里面的两个元素
        func swap<T>(array: inout [T], a: Int, b: Int) {
            if array.count > a && array.count > b {
                (array[a], array[b]) = (array[b], array[a])
            } else {
                print("交换的数组越界了")
            }
        }
    
    二:除法的一个函数
    func divide(dividend: Double?, by divisor: Double?) -> Double? {
            guard let dividend = dividend, let divisor = divisor, divisor != 0 else {
                return nil
            }
            return dividend / divisor
        }
    
    三:闭包的作用域
    var car = "aodi"
            let closure = { [car] in
                print("I drive \(car)")
            }
            car = "benchi"
            closure()
    
    // [car] in 相当于把car变量复制了一份,所有输出的是: I drive aodi , 如果把 [car] in 去掉就会输出: I drive benchi
    
    四:Struct和Class的区别

    Struct是值类型、Class是引用类型。
    如果一个变量student被声明了struct并且是let类型的,那么他的属性也不能被改变,但是class 的话,可以改变属性,但是不能改变本身。

    五:异常处理
    /// 方法一:guard
    func showKitten(kitten: Kitten?) {
      guard let k = kitten else {
        print("There is no kitten")
        return
      }
      print(k)
    }
    // 方法二:添加throw
    enum KittenError: ErrorType {
      case NoKitten
    }
      
    struct Kitten {
    }
      
    func showKitten(kitten: Kitten?) throws {
      guard let k = kitten else {
        print("There is no kitten")
        throw KittenError.NoKitten
      }
      print(k)
    }
    try showKitten(nil)
    // 方法三:
    struct Kitten {
    }
      
    func showKitten(kitten: Kitten?) {
      guard let k = kitten else {
        print("There is no kitten")
        fatalError()
      }
      print(k)
    }
    
    六:swift map的用法。
    // 把整形的数组转换为字符串的数组。
    let arr: [Int] = [1, 2, 2, 5]
            print(arr)
            let lastArr = arr.map {
                String($0)
            }
            print(lastArr)
    
    七:open关键字和public关键字区别

    鉴于当前写时候是 Swift3.x, 现在共有5种权限控制关键字,之后 Swift4 又会有变化.

    open
    open 修饰的 class 在 Module 内部和外部都可以被访问和继承
    open 修饰的 func 在 Module 内部和外部都可以被访问和重载(override)
    Public
    public 修饰的 class 在 Module 内部可以访问和继承,在外部只能访问
    public 修饰的 func 在 Module 内部可以被访问和重载(override),在外部只能访问

    八:求一个整数的平方
    // Int的延展
    extension Int {
      var squared: Int { return self * self}
    }
    5.squared // 25
    5.squared.squared // 625
    
    九:遍历数组的所有元素
    // 利用泛型
    func printElementFromArray<T>(a: [T]) {
      for element in a {
         print(element)
      }
    }
    
    十:利用guard let 避免嵌套
    func loginAction() {
      guard let username = username, let pwd = pwd else {return}
      print("welcome: \(username)")
    }
    
    十一:初始化两个有关系的变量
    // 无论更改radius还是diameter,另一个都会跟着变化其中newValue是系统的变量。
    var radius: Double = 10 // 默认半径是10
    var diameter: Double {
      get {return radius * 2}
      set {radius = newValue/2.0}
    }
    
    
    十二:函数式编程获取1到10的偶数
    var events = (1...10).filter {$0 % 2 == 0}
    

    相关文章

      网友评论

          本文标题:swift 学习笔记

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