在上一节中有些问题还没有弄清,在这里自己写了一下,做了一下验证,并希望能给读者有所帮助。
看例子:
例子中包括
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(对上一节有些遗留进行处理)
时间: 2024-12-28 10:13:13