swift学习之函数类型

var someInt: Int = 7

Int 就是表示someInt的类型,同理,这个Int也可以换成函数类型,所以也可以像其他类型那样使用函数类型

函数类型主要由三种用途:(一)就是上面说的了 (二)作为参数(三)作为返回类型

再加一个,就是函数也可以嵌套(nested)

        let math: (Int , Int) -> Int = addTwoInts
        printMathResult(math, a: 9, b: 9)
        //printMathResult(math, 9, 9)
    func addTwoInts(a:Int , b:Int) -> Int {
        return a + b
    }
    func printMathResult(mathFunction: (Int , Int) -> Int , a: Int , b: Int) {
        print("mathResult:\(mathFunction(a , b))")
    }
    //    func printMathResult(mathFunction: (Int , Int) -> Int , _ a: Int , _ b: Int) {
        print("mathResult:\(mathFunction(a , b))")
    }

let math: (Int , Int) -> Int = addTwoInts 这里就定义了math 为一个接收两个Int型参数并且有返回值且返回为Int型的函数类型

addTwoInts就是定义一个普通函数

printMathResult由函数名字就猜得到这个函数实现的打印功能,并且接收三个参数,第一个参数类型要是函数类型,第二和第三个是两个Int型

两处加//处的地方和上面一行是等效的,只是形参名字省不省略而已

线面看一个嵌套的例子(嵌套就是在一个函数里面可以继续写函数)

        var currentValue = -4
        let moveNearZero = chooseStepFunction(currentValue > 0)
        while currentValue != 0 {
            print("\(currentValue)..")
            currentValue = moveNearZero(currentValue)
        }

        print("zero!")

    }

    func chooseStepFunction(backwards: Bool) -> (Int) -> Int {

        func stepForward(input: Int) -> Int {
            return input + 1
        }

        func stepBackward(input: Int) -> Int {
            return input - 1
        }

        return backwards ? stepBackward : stepForward

    }

这里面既包括了函数嵌套,也包括了函数可以作为返回类型

下面我会好好研究下闭包,在写博客,谢谢

版权声明:本文为博主原创文章,未经博主允许不得转载。

时间: 2024-08-02 11:02:03

swift学习之函数类型的相关文章

浅谈swift中的函数类型和闭包

在讲swift的函数类型之前,我们先回忆一下我们以前学的定义一个swift的函数 func add(a: Int,b: Int) -> Int { return a + b } 好了, 我们开始我们函数类型的讲解 上面这个函数的类型是(Int ,Int)->Int 使用函数类型 我们都知道, 在swift中 , 函数类型就像其他数据类型一样,也就意味着我们可以给一个函数的常量或者是变量赋值 var f2: (Int,Int)-> Int = add f2(2,3) //结果为5 好了,接

Swift 学习- 07 -- 函数

// 函数 // 函数是一段完成特定任务的独立代码片段, 你可以通过给函数命名来标识某个函数的功能, 这个名字可以被用来在需要的时候'调用'这个函数来完成它的任务 // swift 统一的函数语法非常的灵活, 可以用来表示任何函数, 包括从简单的没有参数名字的 C 风格函数, 到复杂的带局部的外部参数 OC 风格函数, 参数可以提供默认值, 以简化函数调用, 参数也可以即当做传入参数, 也当做传出参数,也就是说, 一旦函数执行结束, 传入的参数值会被修改 // 在 swift 中, 每个参数都有

Swift学习之函数和简单地控件的创建

 今天还是重复昨天做的事情--敲代码,但唯一的不同就是所学的知识不同了,我们又进一步往深得层次学习了,感觉越来越有意思了,虽然临近结束了看着大家积极性越来越低了,但是我知道我不能这样,我要比别人付出的更多,更加的踏实才行,因为我知道我的基础不如别人,目标和动力也和他们不同,看着大家有的说是只要找到工作就好,还有的说只要每个月够花就好,担着真的是大家来这里学习的最终目的吗,如果是这样,真的还不如随便找个工作将就一下,也比这个整天做到这好多了,还交了那么贵得费用,所以何必呢,既然选择了这条路,既然当

Swift 学习笔记 (函数)

函数 函数是一个独立的代码块,用来执行特定的任务.Swift中的函数与Object-C中的函数一样,但是声明与书写的方式不太一样,现在我们就通过几个例子介绍一下Swift中的函数.简单的来说,他与JS中的函数声明有些相像,但是如果有返回值的时候,他们返回值的书写方式又有不同. 先来说一个简单的例子 //greet 函数的名称 //personName:函数的形式参数,可以为多个 用逗号隔开 //->String 函数的返回值类型 如果没有可以不写 func greet(personName:St

Swift 学习- 05 -- 集合类型

// 集合类型 // swift 提供 Arrays , Sets 和 Dictionaries 三种基本的集合类型用来存储数据 , 数组(Arrays) 是有序数据的集, 集合(Sets)是无序无重复数据的集, 字典(Dictionaries) 是无序的键值对的集 // swift 语言中的 Arrays, Sets 和 Dictionaries 中存储的数据值类型必须明确, 这意味着我们不能把不正确的数据类型插入其中, 同事这也说明我们完全可以取回值的类型非常自信 // 集合的可变性 //

Swift学习笔记 - 函数与闭包

import Foundation //1.函数的定义与调用//以 func 作为前缀,返回箭头 -> 表示函数的返回类型func sayHello(name: String) -> String { let greeting = "Hello " + name + "!" return greeting} println(sayHello("Anna")) //1.1函数的参数与返回值//函数可以有多个输入参数,写在圆括号中,用逗号

swift学习之函数(一)

函数就是实现某些特定功能的模块板块,通过函数名调用(起函数名最好起的最好可以通过函数名就基本知道这个函数是干嘛的,不要嫌麻烦,可以多写点),可以定义一个或多个参数名,参数类型,然后可以有返回类型,当通过函数名调用("call")函数的时候,我们传递的参数类型要和函数定义的参数类型一致 (一)定义和调用函数 我们定义一个sayHello(_:)的的函数,因为这就是这个函数的功能,传入一个人名,返回的是和这个人打招呼.为了完成这个,我们需要一个String类型的传入参数,叫做personN

Swift学习(2函数闭包)

函数的定义 1.函数的基础写法 func 函数名(形参列表)->返回值类型 例: func sum(x:int ,y:int) -> int{ return x+y } print(sun(x:10,y:50)) 2.外部参数的使用,就是在形参前加一个名字,外部参数不会影响函数内部细节,外部参数会让外部调用看起来更加的直观 例:func sum(num1 x:int ,num2 y:int )-> int{ return x+y } print(sum(num1:30,num2:40))

[Swift]学习笔记-可选类型/可选链

可选类型/可选链                        Make-by-LJW ---转载请注明出处... 它的可选性体现于请求或调用的目标当前可能为空(nil) 如果可选的目标有值,那么调用就会成功: 如果选择的目标为空(nil),则这种调用将返回空(nil) 多次调用被链接在一起形成一个链,如果任何一个节点为空(nil)将导致整个链失效. 因为可选链的结果可能为nil,可能有值.因此它的返回值是一个可选类型. 可以通过判断返回是否有值来判断是否调用成功 有值,说明调用成功 为nil,