您的位置:首页 > 移动开发 > Swift

初探swift语言的学习笔记四-2(对上一节有些遗留进行处理)

2014-06-12 22:23 483 查看
作者:fengsh998原文地址:http://blog.csdn.net/fengsh998/article/details/30314359转载请注明出处如果觉得文章对你有所帮助,请通过留言或关注微信公众帐号fengsh998来支持我,谢谢!

在上一节中有些问题还没有弄清,在这里自己写了一下,做了一下验证,并希望能给读者有所帮助。
看例子:
例子中包括

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;}
}
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: