初探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中是允许的. ...
随机推荐
- Spring积累总结
1.spring 的优点: 1.降低了组件之间的耦合性 ,实现了软件各层之间的解耦 2.可以使用容易提供的众多服务,如事务管理,消息服务等 3.容器提供单例模式支持 4.容器提供了AOP技术,利用它很 ...
- springBoot Json
pom 加json配置 <dependency> <groupId>com.alibaba</groupId> <artifactId>fastjson ...
- Fiddler简介以及web抓包
Fiddler简介以及web抓包 版权声明:本文为博主原创文章,未经博主允许不得转载. 一.Fiddler简介简单来说,Fiddler是一个http协议调试代理工具,它能够记录并检查所有你的电脑和互联 ...
- 10.1综合强化刷题 Day2 morning
一道图论神题(god) Time Limit:1000ms Memory Limit:128MB 题目描述 LYK有一张无向图G={V,E},这张无向图有n个点m条边组成.并且这是一张带权图,只有 ...
- UVA - 1205 Color a Tree
大意就是给你一颗树,每个点有一个权值w[i],求一个排列使得 所有的父亲都在儿子前面 并且排列的权值最小. 排列的权值在这里定义为 Σ i * w[p[i]] ,其中p[i] 是排列第i个位置的元 ...
- 转:一个经典例子让你彻彻底底理解java回调机制
一个经典例子让你彻彻底底理解java回调机制 转帖请注明本文出自xiaanming的博客(http://blog.csdn.net/xiaanming/article/details/17483273 ...
- shell 实现自动备份nginx下的站点
shell 实现自动备份nginx下的站点 优点 实现自动备份ngnix下的所有运行的站点 自定义排除备份站点,支持三种排除 自动维护备份目录,防止备份目录无限扩大 备份压缩tar.gz格式 源码: ...
- 【原创】Android View框架总结(三)View工作原理
测量/布局/绘制顺序 如何引起View的测量/布局/绘制? PerformTraversales() ViewRoot View工作基本流程 MeasureSpec SpecMode Measure ...
- EasyMvc入门教程-高级控件说明(19)表单控件
我们开发的系统,主要的一个功能就是采集界面数据,传回到服务器,比如:录入学生信息,这时候就需要表单. EasyMvc提供了如下界面控件,如下图所示:(控件+布局) EasyMvc实现了基于模型的绑定, ...
- 用户空间和内核空间通讯之【Netlink 上】
原文地址:用户空间和内核空间通讯之[Netlink 上] 作者:wjlkoorey258 引言 Alan Cox在内核1.3版本的开发阶段最先引入了Netlink,刚开始时Netlink是以字符驱动接 ...