初探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中是允许的. ...
随机推荐
- JS-JavaScript String 对象-string对象方法2: indexOf()、lastIndexOf()、charAt()
1.indexOf():可返回某个指定的字符串值在字符串中首次出现的位置. 1).语法:string.indexOf(searchvalue,start): searchvalue:必需.规定 ...
- 2017 ACM-ICPC EC-Final 记录
北京赛区结束后就以为自己的赛季结束了……但是还是保持着做题量 那天突然接到通知,去打EC-Final 但是这是一个临时组起来的队伍,另外两位队友原来一起组的比较熟,我就需要适应一下. 于是我们临时训练 ...
- app中获取应用名称,版本等信息的方法
在app中,我们有时候需要显示一些信息,例如名称,版本等等...如果用写死的方式可能不太好,我们可以动态的读取.应用的信息主要是在info.plist这个文件中,实际就是一个xml文件,以源文件的方式 ...
- iOS5可能会删除本地文件储存
文/ Nick (iphoneincubator) 关于iOS 5的本地文件储存Marco(Instapaper 的开发者)写过一篇很好的帖子阐述过相关问题,有兴趣的同学可以先阅读下他的文章然后再看下 ...
- 对象第复制operator=
类机制中有默认的对象复制操作符=,自定义对象复制需要注意一个问题,如果有遇到指针指向的资源是需要释放的,这时需要毫不留情释放,否则内存空间的泄露就不可避免.复制操作与拷贝构造函数的参数是一致的,只是在 ...
- 推荐系统中的注意力机制——阿里深度兴趣网络(DIN)
参考: https://zhuanlan.zhihu.com/p/51623339 https://arxiv.org/abs/1706.06978 注意力机制顾名思义,就是模型在预测的时候,对用户不 ...
- GCC + GDB 调试方法
首先编译程序 多加一个 -g c++ test.cpp -o a -Wall -g 执行时使用 gdb a 此时输入 l 显示所有的代码 l 输入b 加入断点到某一行(break) b 108 运行 ...
- Linux学习之十三-vi和vim编辑器及其快捷键
vi和vim编辑器及其快捷键 1.vi与vim区别 它们都是多模式编辑器,不同的是vim 是vi的升级版本,它不仅兼容vi的所有指令,而且还有一些新的特性在里面. vim的这些优势主要体现在以下几个方 ...
- 负载均衡情况下获取真实ip的方法
公司用了硬件负载均衡,最近发现日志中的用户ip都为负载均衡器的ip,业务需要所以要改为用户真实ip,下面记录一下! 1.打开文件:/etc/httpd/conf/httd.conf. 2.在文件中查找 ...
- Android4.0(Phone)拨号启动过程分析(一)
因为工作的须要.须要改动原生的Phone程序,如今就好好看下来电与拨号是怎样处理的:无论是拨号还是来电,调用的都是Phone程序,因为非常多类都涉及到framework层,比較复杂:先从简单的拨号分析 ...