zoukankan      html  css  js  c++  java
  • 8 函数类型——《Swift3.0从入门到出家

    Swift语言中每一个函数都有它特定的数据类型,称其为函数类型

    函数类型和基本数据类型一样,可以定义变量或者常量,可以定义函数形参,也可以做为函数的返回值类型

     

    函数类型的格式为:参数列表的数据类型—>返回值类型

     

    <1>func test1(name: String,age: Int)->String{}

     

    函数类型:(String,Int)->String

    <2>func test2(a: Int){}

     

    函数类型:(Int)->() 或者 (Int)->Void

     

    <3>func test3(){}

     

    函数类型:()->() 或者 ()->Void

     

    定义函数类型的变量

    func sumAAndB(a: Int,b: Int) -> Int {//函数类型为(Int,Int)->Int

        return a + b

    }

    var myFunction: (Int,Int)->Int = sumAAndB//myFunction 的类型标注为函数类型

     

    func shapePan( Int,height: Int) ->Int {

        return (height + width) * 2

    }

    myFunction = shapePan //可以将函数赋给相同函数类型的变量

     

     

    使用函数类型定义函数形参

     

    例子:实现数组中的数据排序:

    var array = [1,1231,124,54654,10]

    //数组升序函数

    func isBigerSort(oneNum: Int,twoNum: Int)->Bool {

        return oneNum > twoNum

    }

    //数组降序函数

    func isSmallerSort(oneNum: Int,twoNum: Int) ->Bool {   

       return oneNum < twoNum

    }

    //两个数交换数组中的显示位置的函数

    func exchangeNumIndex(inout one: Int,inout two: Int) -> Void {

        let tmp = one

        one = two

        two = tmp

    }

    //排序函数,其中method为函数类型的参数

    func sortArray(inout arr: [Int],method: (Int,Int)->Bool) {  

       for i in 0..<arr.count - 1 {

            for j in 0..<arr.count - i - 1 {    

                if method(arr[j],arr[j + 1]) {

                    exchangeNumIndex(&arr[j], two: &arr[j + 1])

                }

            }

        }

        

    }

    //实现升序

    sortArray(&array, method: isBigerSort)//传入数组地址和相同函数类型的函数

    print(array)

    //实现降序

    sortArray(&array, method: isSmallerSort)

    print(array)

     

    函数类型作为函数的返回值类型

     

    func triangle(length: Int) ->Int {

        return 3 * length

    }

    func square(length: Int) ->Int {

        return 4 * length

    }

    func circle(r: Int) ->Int {    

        return Int(3.14) * r * r

    }

    func getShapeMeter(type: String) ->(Int)->Int {  

        switch type {

        case "triangle":

            return triangle

        case "square":

            return square

        default:

            return circle

        }

    }

    var myFunc = getShapeMeter("triangle")

    print(myFunc(10))

    函数类型作为函数形参,通过判断形参对应的方法能使一个函数实现不同的功能

  • 相关阅读:
    假期学习总结2-14
    假期学习总结2-13
    假期总结2-12
    假期总结2-11
    读人月神话
    冲刺第五天 11.29 THU
    冲刺第四天 11.28 WED
    冲刺第三天 11.27 TUE
    冲刺第二天 11.26 MON
    冲刺第一天 11.23 FRI
  • 原文地址:https://www.cnblogs.com/zhyunfe/p/5842031.html
Copyright © 2011-2022 走看看