初探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(对上一节有些遗留进行处理)

时间: 2024-12-28 10:13:13

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

初探swift语言的学习笔记四(类对象,函数)

作者:fengsh998 原文地址:http://blog.csdn.net/fengsh998/article/details/29606137 转载请注明出处 假设认为文章对你有所帮助,请通过留言或关注微信公众帐号fengsh998来支持我,谢谢! swift扩展了非常多功能和属性,有些也比較奇P.仅仅有慢慢学习,通过经验慢慢总结了. 以下将初步学习一下类的写法. 码工,最大爱好就是看码,而不是文字,太枯燥. // // computer.swift // swiftDemo // // C

初探swift语言的学习笔记十一(performSelector)

作者:fengsh998 原文地址:http://blog.csdn.net/fengsh998/article/details/35842441 转载请注明出处 如果觉得文章对你有所帮助,请通过留言或关注微信公众帐号fengsh998来支持我,谢谢! 在OC中使用好好的performSelector,但不知为什么在swift有意的被拿掉了.更有甚者连IMP, objc_msgSend也不能用了.虽然想不通为什么,但应该有他的道理.就不纠结了. 大家可能在OC中使用得更多的就是延时处理,及后台处

初探swift语言的学习笔记十(block)

作者:fengsh998 原文地址:http://blog.csdn.net/fengsh998/article/details/35783341 转载请注明出处 如果觉得文章对你有所帮助,请通过留言或关注微信公众帐号fengsh998来支持我,谢谢! 在前面一些学习中,原本把闭包给理解成了block尽管有很多相似之处,但block还是有他自己的独特之外.近日,在写oc/swift混合编码时,有时候需要swift回调oc,oc回调swift . 因此我把swift中的 block 常见的声明和写

初探swift语言的学习笔记六(ARC-自动引用计数,内存管理)

Swift使用自动引用计数(ARC)来管理应用程序的内存使用.这表示内存管理已经是Swift的一部分,在大多数情况下,你并不需要考虑内存的管理.当实例并不再被需要时,ARC会自动释放这些实例所使用的内存. 另外需要注意的: 引用计数仅仅作用于类实例上.结构和枚举是值类型,而非引用类型,所以不能被引用存储和传递. swift的ARC工作过程 每当创建一个类的实例,ARC分配一个内存块来存储这个实例的信息,包含了类型信息和实例的属性值信息. 另外当实例不再被使用时,ARC会释放实例所占用的内存,这些

初探swift语言的学习笔记八(保留了许多OC的实现)

尽管swift作为一门新语言,但还保留了许多OC的机制,使得swift和OC更好的融合在一起.如果没有OC基础的先GOOGLE一下. 如:KVO,DELEGATE,NOTIFICATION. 详见DEMO. import Foundation @objc // 需要打开objc标识,否则@optional编译出错 protocol kvoDemoDelegate { func willDoSomething() @optional func didDoSomething() //可选实现, }

初探swift语言的学习笔记(可选类型?和隐式可选类型!)

可选类型.隐式可选类型 其次swift还引入一个较有趣的初始值设置语法使用"?"操作符及"!"号操作符 如:"var optionalString: String? = "Hello" optionalString == nil var optionalName: String? = "John Appleseed" var greeting = "Hello!" if let name = op

初探swift语言的学习笔记九(OC与Swift混编)

swift 语言出来后,可能新的项目直接使用swift来开发,但可能在过程中会遇到一些情况,某些已用OC写好的类或封装好的模块,不想再在swift 中再写一次,哪就使用混编.这个在IOS8中是允许的. 先中简单的入手,先研究在同一个工程目录下混合使用的情况. 为了演示.先准备两个类 第一个是swift语言写的类,文件名为 act.swift import Foundation class Act : NSObject { func hasAct(tag:Int) -> String { swit

初探swift语言的学习笔记(类对象,函数)

swift扩展了很多功能和属性,有些也比较奇P.只有慢慢学习,通过经验慢慢总结了. 下面将初步学习一下类的写法. 码工,最大爱好就是看码,而不是文字,太枯燥. // // computer.swift // swiftDemo // // Created by apple on 14-6-8. // Copyright (c) 2014年 fengsh. All rights reserved. /* 写本例子的目的在于快速学习swift类的写法,包括知识点: 1.属性设置 2.构造.释构 3.

初探swift语言的学习笔记七(swift 的关健词)

每一种语言都有相应的关键词,每个关键词都有他独特的作用,来看看swfit中的关键词: 关键词: 用来声明的: “ class, deinit, enum, extension, func, import, init, let, protocol, static, struct, subscript, typealias, var.” 用于子句的: “ break, case, continue, default, do, else, fallthrough, if, in, for, retur