美文网首页程序员iOS技术交流收藏@IT·互联网
三.初识Swift.让我们的程序飞起来~(函数-闭包)

三.初识Swift.让我们的程序飞起来~(函数-闭包)

作者: 阿拉斯加的狗 | 来源:发表于2015-12-04 02:44 被阅读101次

不知道大家觉得现在对swift的了解怎么样了~ 反正本集笔记都是我自己的小demo的总和,觉得分享出来.

  • 一是让大家更加清楚的认识到swift真的离我们越来越近了
  • 二是就当自己的一个小笔记,等那天不记得回头翻看也是另外一番滋味,记录自己的成长,在不断的挖掘中学习,不能每天漫无目的的乱撞,量变引起质变,每一位大牛都不是莫名的成为大牛,都要历经小白这漫漫的长路,最终找寻到真正属于自己的那篇空间.

废话不多说.把今天最后的基础内容也分享给大家,那就是swift中最为关键重要的也是未来项目开发的根基<函数>跟<闭包> 相信学习过swift的朋友应该都清楚的懂得当初的不易.共勉寻求真正的代码魅力.

本篇学习目录为:

目标

函数

  • 定义格式

  • 外部参数

  • 无返回值的三种情况

  • 闭包

  • 闭包的定义

  • 尾随闭包

  • import UIKit

    class ViewController: UIViewController {

    override func viewDidLoad() {
    super.viewDidLoad()

      // 调用函数的时候,默认第一个参数名可以省略,在早期 swift 中 sum(10, 20)
      print(sum(10, y: 30))
      
      print(sum2(num1: 50, num2: 30))
      
      demo1()
      demo2()
      demo3()
    

    }

    // 没有返回值的情况
    /**
    1. 什么都不写
    2. Void
    3. ()

      日常开发中,可以什么都不写,三种格式一定要都知道
    
      三种类型,在闭包中会使用!
    

    */
    func demo1() {
    print("哈哈")
    }

    func demo2() -> Void {
    print("呵呵")
    }

    func demo3() -> () {
    print("嘻嘻")
    }

    // 外部参数
    /**
    外部参数,不会影响到函数内部的代码执行
    作用是方便调用函数的程序员,更加明确各个参数的语义

      外部参数,在闭包中很重要
    

    */
    func sum2(num1 x: Int, num2 y: Int) -> Int {
    return x + y
    }

    /**
    格式
    func 函数名(行参列表) -> 返回值类型
    */
    func sum(x: Int, y: Int) -> Int {
    return x + y
    }
    }

闭包的定义
定义一个函数

//: 定义一个 sum 函数func sum(num1 num1: Int, num2: Int) -> Int { return num1 + num2}sum(num1: 10, num2: 30)//: 在 Swift 中函数本身就可以当作参数被定义和传递let mySum = sumlet result = mySum(num1: 20, num2: 30)

定义一个闭包闭包 = { (行参) -> 返回值 in // 代码实现 }
in
  用于区分函数定义和代码实现

//: 闭包 = { (行参) -> 返回值 in // 代码实现 }let sumFunc = { (num1 x: Int, num2 y: Int) -> Int in return x + y}sumFunc(num1: 10, num2: 20)

最简单的闭包,如果没有参数/返回值,则 参数/返回值/in
统统都可以省略{ 代码实现 }

let demoFunc = { print("hello")}

关于闭包的实战演练

import UIKit

class ViewController: UIViewController {

override func viewDidLoad() {
    super.viewDidLoad()
    
    loadData2 { (html) -> () in
        print("完成回调代码 \(html)")
    }
    
    loadData3()
}

// `尾`随闭包 - 不要求自己写,但是,要求必须能看懂
// 1. 闭包最后一个参数
// 2. 函数 的 ) 前置到倒数第二个参数末尾
// 3. 最后一个逗号省略
// 补充,简化闭包,如果没有参数,没有返回值,可以省略
func loadData3() {
    
    dispatch_async(dispatch_get_global_queue(0, 0)) {
        print("hehe")
    }
    
    dispatch_async(dispatch_get_global_queue(0, 0)) {
        print("haha")
        
        dispatch_sync(dispatch_get_main_queue()) {
            print("主线程回调")
        }
    }
}

// block / 闭包的应用场景
// 通常用在异步加载网络数据,完成回调 -> 以 参数 的形式 传递网络获取的数据
func loadData2(finished: (html: String) -> ()) {
    
    dispatch_async(dispatch_get_global_queue(0, 0)) { () -> Void in
        print("耗时操作 \(NSThread.currentThread())")
        
        // 通常加载数据...
        
        // 异步完成之后,通过 block 回调
        dispatch_async(dispatch_get_main_queue(), { () -> Void in
            print("完成 \(NSThread.currentThread())")
            
            // 执行 finished 回调
            finished(html: "<html></html>")
        })
    }
}

// block / 闭包的应用场景
// 通常用在异步加载网络数据,完成回调
func loadData(finished: () -> ()) {
    
    dispatch_async(dispatch_get_global_queue(0, 0)) { () -> Void in
        print("耗时操作 \(NSThread.currentThread())")
        
        // 通常加载数据...
        
        // 异步完成之后,通过 block 回调
        dispatch_async(dispatch_get_main_queue(), { () -> Void in
            print("完成 \(NSThread.currentThread())")
            
            // 执行 finished 回调
            finished()
        })
    }
}

有关swift的基本语法我就总结到这里.明天我将会给大家带来swift的面向对象的相关知识.不要急~ 希望能够帮助那些想学而又却无法下手的学习swift的书友们.有什么不懂得地方或者有建议的地方可以子啊下方留言,学习嘛 就是在不断的思考中才能得到最有效的回馈.

iOS技术成长群:255032637 有愿意的小伙伴可以长期学习共勉!
学习永不止步!!!!!!

相关文章

网友评论

    本文标题:三.初识Swift.让我们的程序飞起来~(函数-闭包)

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