Swift 3.0 闭包的定义和使用
//
// ViewController.swift
// 闭包的定义和使用
//
// Created by 思 彭 on 16/9/17.
// Copyright © 2016年 思 彭. All rights reserved.
// import UIKit class ViewController: UIViewController { override func viewDidLoad() {
super.viewDidLoad() // 1>. 最简单的闭包 ()->()没有参数,没有返回值的函数 如果没有参数,没有返回值,in可以省略
let b1 = { print("Hello SiSi")
}
// 执行闭包
b1() // 2. 带参数的闭包 参数,返回值,实现代码都是写在{}中
// {形参列表 - >返回值类型 // 实现代码}
// 使用 in 分割定义和实现 b2的类型: (Int) -> ()
let b2 = { (x: Int ) ->() in print(x)
}
// 执行闭包
b2() // 3.带参数/返回值的闭包
// (Int) -> Int
let b3 = {(y: Int) ->Int in return y +
}
// 闭包调用
print(b3()) // 4.异步执行任务,获取数据,通过block/闭包回调,闭包的应用场景和闭包一样
// 5.尾随闭包 如果函数的最后一个参数是闭包,函数的参数可以提前结束,最后一个参数直接使用{}包装闭包的代码
/*
loadData() { (result) in
print(result)
} */
loadData { (result) in
print(result)
}
// 按照函数的本身编写
loadData(completion: {(result) -> () in print(result)
})
} func demo1() { // 尾随闭包
DispatchQueue.global().async { // 嵌套的GCD xcode不会改成尾随闭包
DispatchQueue.main.async(execute: { })
}
// 尾随闭包
DispatchQueue.main.async { }
} func loadData(completion: (result: [String]) ->()) -> () { // 将任务添加到队列,执行任务的操作,队列的调度是以同步/异步执行任务
DispatchQueue.global().async{
print("耗时操作\(Thread .current())")
// 休眠
Thread.sleep(forTimeInterval: 1.0) // 获得数据
let json = ["头条","八卦","出大事了"]
//主线程更新
DispatchQueue.main.async(execute: {
print("主线程更新UI\(Thread.current())") // 回调,执行,通过参数回调
completion(result: json)
})
}
} // 1.使用变量记录函数 func demo() { let x:Int = sum(x: , y: )
print("sum = \(x)")
// 闭包: 提前准备好代码,需要的时候执行,可以当做参数传递 // 定义一个常量记录函数 (x: Int, y: Int) -> Int
let f = sum
// 在需要的时候执行 在OC是不能实现
print(f(x: , y: )) } func sum(x:Int,y: Int) -> Int { return x + y
} }
Swift 3.0 闭包的定义和使用的更多相关文章
- Swift入门篇-闭包和函数
今天主要是给大家分享的是 swift中闭包的用法,我个人觉得闭包就是函数的简写方法,如果您函数不是很熟悉请查阅 swift入门篇-函数 1:函数类型 函数类型 var 变量 :(类型)->返回值 ...
- Swift 2.0初探
转眼间,Swift已经一岁多了,这门新鲜.语法时尚.类型安全.执行速度更快的语言已经渐渐的深入广大开发者的心. 今年6月,一年一度的WWDC大会如期而至,在大会上Apple发布了Swift 2.0,引 ...
- Swift学习:闭包(Closures)
/* 闭包(Closures)* 闭包是自包含的功能代码块,可以在代码中使用或者用来作为参数传值.* 在Swift中的闭包与C.OC中的blocks和其它编程语言(如Python)中的lambdas类 ...
- iOS开发——新特性OC篇&Swift 2.0新特性
Swift 2.0新特性 转眼间,Swift已经一岁多了,这门新鲜.语法时尚.类型安全.执行速度更快的语言已经渐渐的深入广大开发者的心.我同样也是非常喜爱这门新的编程语言. 今年6月,一年一度 ...
- Swift 2.0初探:值得注意的新特性
转眼间,Swift已经一岁多了,这门新鲜.语法时尚.类型安全.执行速度更快的语言已经渐渐的深入广大开发者的心.我同样也是非常喜爱这门新的编程语言. 今年6月,一年一度的WWDC大会如期而至,在大会上A ...
- Swift中的闭包(Closure) 浅析
转载自:http://www.devtalking.com/articles/closure-expressions-in-swift/ 闭包在Swift中非常有用.通俗的解释就是一个Int类型里存储 ...
- Swift 学习- 08 -- 闭包
// 闭包是自包含的函数代码块, 可以在代码中被传递和使用, swift 中的闭包 与 C语言 和 OC 中的代码块 (blocks) 以及其他一些编程语言中的匿名函数比较类似 // 闭包可以捕获和存 ...
- Swift 中的闭包与 C 和 Objective-C中的 blocks 以及其它一些编程语言中的 lambdas 比較类似。
闭包是功能性自包括模块,能够在代码中被传递和使用. Swift 中的闭包与 C 和 Objective-C中的 blocks 以及其它一些编程语言中的 lambdas 比較相似. 闭包能够 捕获 和 ...
- Swift - 3.0 去掉 C 风格循环
Swift 3.0 版本去掉了沿用已久的 C 风格循环语法, 又是向现代开发语言的一次迈进, 咱们就来看看没了 C 风格循环我们还有什么选择 C 风格循环 关于 C 风格循环, 不我们过多介绍了, 就 ...
随机推荐
- 通过shell发送邮件
安装mailx CentOS 7自带有mailx软件包, 有/usr/bin/mail命令, 配置文件为/etc/mail.rc. 如果没有软件包, 可以安装 CentOS/Fedora yum in ...
- 一步步实现ArcMenu效果
先来看一下最终要实验的效果: 是不是跟国外的一款Path的菜单效果类似,这里的动画采用补间动画去实现,正而操练一下补间动画. 布局和子视图的测量处理: 新建一自定义View继承ViewGroup: 然 ...
- BZOJ4886 [Lydsy1705月赛]叠塔游戏[基环树]
很妙的一道题. 由于本人过于zz,不会这道题,通过厚颜无耻翻阅题解无数终于懂了这道题,所以这里转载一位神仙的blog. 没有看懂?没事,再来一篇. 这题个人认为主要在于转化题意和建图,这两点想通了应该 ...
- ElasticsearchException: java.io.IOException: failed to read [id:0, file:/data/elasticsearch/nodes/0/_state/global-0.st]
from : https://www.cnblogs.com/hixiaowei/p/11213143.html 1.以前装过elasticsearch,重新安装elastic search ,报错 ...
- flutter TextField 输入框被软键盘挡住的解决方案
以前搞ionic1~4的开发中 和react-native flutter中的机制完全不同, 在flutter 中 当前页面如果存在元素被软键盘挡住 的情况 页面元素的最外层肯定得嵌套一层 S ...
- js替换文本内容。实例
<script language="javascript"> var r= "1\n2\n3\n"; //将字母\n替换成分号 alert(r.re ...
- vue 01 练习
1.有 红.黄.蓝 三个按钮,以及一个200x200矩形框box,点击不同的按钮,box的颜色会被切换为指定的颜色 <!DOCTYPE html> <html lang=" ...
- python--ctypes模块:调用C函数
Python 的 ctypes 要使用 C 函数,需要先将 C 编译成动态链接库的形式,即 Windows 下的 .dll 文件,或者 Linux 下的 .so 文件 Windows 系统下的 C 标 ...
- Delphi 实现Ping命令
Delphi 实现Ping命令 unit FtPing; interface uses Windows, SysUtils, Classes, Controls, Winsock, StdCtrls ...
- luogu 1169 [ZJOI2007]棋盘制作 悬线dp
悬线法,虽然得不到局部最优解,但是一定能得到全局最优解的算法,十分神奇~ #include <cstdio> #include <algorithm> #define N 20 ...