初探swift语言的学习笔记四-2(对上一节有些遗留进行处理)
在上一节中有些问题还没有弄清,在这里自己写了一下,做了一下验证,并希望能给读者有所帮助。
看样例:
样例中包含
callback函数的声明与使用
函数作为形參进行传递
函数作为返回值
函数支持泛型,当然class也支持。
import Foundation typealias Point = (Int, Int) let origin: Point = (0, 0) //初始化函数用
func willDoit(sender : CallBackManager)
{
println("willDoit defaulft.")
} func didDoit(sender : CallBackManager)
{
println("didDoit defaulft.")
} class CallBackManager
{
//声明两个函数变量
var willdoitcallback : (CallBackManager) -> () = willDoit
var diddoitcallback : (CallBackManager) -> () = didDoit var callbackName = "hello world"
init()
{ } func testCall()
{
self.willdoitcallback(self) callbackName = "reset data"
println("to do something.") self.diddoitcallback(self)
} //函数地址作为形參传递
func testparams(addfunc:(Int,Int)->(Int),instruction : String) ->Bool
{
println("3 + 5 = \(addfunc(3,5)) , 第二个參数值为:\(instruction)")
return true
} //函数作为返回值
func testfunctionReturn(instruction : String) -> (Int,Int) -> Int
{
func Multiplication(a:Int,b:Int) ->Int
{
return a * b
} return Multiplication
} //自己主动闭包类型
//调用simpleAssert(testNumber % 2 == 0, "testNumber isn't an even number.")
func simpleAssert(condition: @auto_closure () -> Bool, message: String) {
if !condition() {
println(message)
}
} //可变參数
func unknowParam(slist : String...)
{
var ret : String = ""
for usb in slist
{
println(usb)
ret += (usb + ",")
}
} //使用泛型
//simpleMin(17, 42) //整型參数
//simpleMin(3.14159, 2.71828) //浮点型 func simpleMin<T: Comparable>(x: T, y: T) -> T {
if x < y {
return y
}
return x
}
}
调用:
class ViewController: UIViewController { func willcallback(callback : CallBackManager)
{
println("回调前结果\(callback.callbackName)")
} func didcallback(callback : CallBackManager)
{
println("回调后结果\(callback.callbackName)")
} func add(a:Int,b:Int) -> Int
{
return a + b
} override func viewDidLoad() {
super.viewDidLoad() var test = CallBackManager()
test.willdoitcallback = willcallback
test.diddoitcallback = didcallback
test.testCall() test.testparams(add,instruction: "測试函数作为传參") let funcMulti = test.testfunctionReturn("返回函数地址") let ret = funcMulti(5,5)
println("5 * 5 = \(ret)") return;}
}
初探swift语言的学习笔记四-2(对上一节有些遗留进行处理)的更多相关文章
- 初探swift语言的学习笔记四(类对象,函数)
作者:fengsh998 原文地址:http://blog.csdn.net/fengsh998/article/details/29606137 转载请注明出处 假设认为文章对你有所帮助,请通过留言 ...
- 初探swift语言的学习笔记七(swift 的关健词)
每一种语言都有相应的关键词,每个关键词都有他独特的作用,来看看swfit中的关键词: 关键词: 用来声明的: “ class, deinit, enum, extension, func, impor ...
- 初探swift语言的学习笔记三(闭包-匿名函数)
作者:fengsh998 原文地址:http://blog.csdn.net/fengsh998/article/details/29353019 转载请注明出处 假设认为文章对你有所帮助,请通过留言 ...
- 初探swift语言的学习笔记十(block)
作者:fengsh998 原文地址:http://blog.csdn.net/fengsh998/article/details/35783341 转载请注明出处 假设觉得文章对你有所帮助,请通过留言 ...
- 初探swift语言的学习笔记(闭包 - 匿名函数或block块代码)
很多高级语言都支持匿名函数操作,在OC中的block也为大家所熟悉,然面在swift里好像是被重新作了一个定义,不叫匿名函数,或 block了,而叫闭包(closure).下面配合代码来理解一下swi ...
- 初探swift语言的学习笔记五(线程)
作者:fengsh998 原文地址:http://blog.csdn.net/fengsh998/article/details/30354127 转载请注明出处 假设认为文章对你有所帮助,请通过留言 ...
- 初探swift语言的学习笔记十一(performSelector)
作者:fengsh998 原文地址:http://blog.csdn.net/fengsh998/article/details/35842441 转载请注明出处 假设认为文章对你有所帮助,请通过留言 ...
- 初探swift语言的学习笔记(闭包-匿名函数或block块代码)
使用Block的地方很多,其中传值只是其中的一小部分,下面介绍Block在两个界面之间的传值: 先说一下思想: 首先,创建两个视图控制器,在第一个视图控制器中创建一个UILabel和一个UIButto ...
- 初探swift语言的学习—Object-C与Swift混编
swift 语言出来后,可能新的项目直接使用swift来开发,但可能在过程中会遇到一些情况,某些已用OC写好的类或封装好的模块,不想再在swift 中再写一次,哪就使用混编.这个在IOS8中是允许的. ...
随机推荐
- cobbler一键部署centos7.4(脚本)
执行脚本之前你需要做四件事 1. 关闭防火墙 2.关闭selinux 3.配置163或者阿里云的 yum源 4.上传centos7.4的镜像如下图 [root@cobbler ~]# cat auto ...
- 网站优化—mysql explain执行计划
explain执行计划 简介MySQL调优: 先发现问题(慢查询,profile) 对于使用索引和没有使用索引,了解到索引可以快速去查找数据 了解什么是索引(索引是排好序的快速查找的数据结构) 索引的 ...
- 关于js延迟加载(异步操作)的方式
一.概述 最近重新开始学习js,在第一章的一个小节里写到了“脚本调用策略”,书上写的这部分不多,但是发现在我之前的(笔)面试中,问到的频率还是比较高的.自己一直习惯于直接把所有js文件写在head里, ...
- mysql控制台入门级--简单的创建表,字段。。。(用于网站测试)
一:在Mysql控制台创建数据表 [sql] use ceshi; create table student ( stuid int primary key auto_incremen ...
- luogu P1608 路径统计
题目描述 “RP餐厅”的员工素质就是不一般,在齐刷刷的算出同一个电话号码之后,就准备让HZH,TZY去送快餐了,他们将自己居住的城市画了一张地图,已知在他们的地图上,有N个地方,而且他们目前处在标注为 ...
- 2017省选集训测试赛(二十五)Problem B recollection
@(XSY)[后缀数组, 启发式合并, ST表] Description Solution 后缀数组 + 启发式合并 + Sparse Table. 这是第一次写树上后缀数组. 对以每个点为根的子树统 ...
- 使用nginx实现的灰度发布思路研究(待实践)
灰度发布也叫 A/B 测试,原理是一套系统在实现了负载均衡,全国节点都部署了系统之后,可以在新功能上线后,让一小部分用户先使用,从中收集使用信息来做对比和发现bug,及时调整,最终分发到全国的节点. ...
- 使用log4net无法将日志记录插入mysql数据库解决办法
写在前面 今天没事研究了下,将日志文件写入mysql数据库,因为新公司用的数据库也是mysql,项目中需要将日志信息写入数据库,没办法,就研究了下.在使用过程中遇到一个很蛋疼的问题.最后解决了,郁闷了 ...
- windows 网络编程[转]
利用winsock编写网络应用程序服务端的步骤简述如下WSAStartup 初始化网络编程库 socket 创建套接字 bind 指定地址.端口,绑定套接字 listen 进入监听状态 accept ...
- 2016.3.23 集成新版activiti-modeler(5.17+)到项目中
书:<activiti实战> 博客: http://www.kafeitu.me/activiti/2013/03/10/integrate-activiti-modeler.html h ...