13.函数的类型和基本使用

第一:函数类型:

创新互联是一家专业提供湘西土家族企业网站建设,专注与成都网站制作、成都网站设计、H5建站、小程序制作等业务。10年已为湘西土家族众多企业、政府机构等服务。创新互联专业网站制作公司优惠进行中。

/*

函数类型:

类似于C语言的指向函数的指针

类似于OC语言的block

函数类型是由函数的参数类型和返回值类型组成的

*/

// 这两个函数的类型是 (Int, Int) -> Int

func sum(a: Int, b: Int) ->Int

{

return a + b;

}

func sub(a: Int, b: Int) ->Int

{

return a - b;

}

//可以利用函数类型定义函数变量和常量

var funcP:(Int, Int) -> Int = sum

funcP = sub

print(funcP(10, 20))

//函数类型可以作为函数的参数

func calFunc(a: Int, b: Int ,Option:(Int, Int) -> Int) ->Int

{

    return Option(a, b)

}

print(calFunc(10, b: 20, Option: sum))

print(calFunc(10, b: 20, Option: sub))

//函数类型可以作为函数返回值

func max(a: Int, b: Int) -> Int

{

    return a > b ? a : b

}

func min(a: Int, b: Int) -> Int

{

    return a < b ? a : b

}

func chooseFunc(getMax:Bool) -> (Int , Int) -> Int

{

return getMax ? max : min

}

var funcP2:(Int , Int) -> Int = chooseFunc(false)

print(funcP2(10, 20))

第二 .  函数:完成某个特定任务的代码块,给代码起一个合适的名称称之为函数名称.以后需要执行代码块只需要利用函数名称调用即可,好比每个人都有一个名字,叫名字就能找到对应的人

格式:

func函数名称(参数名:参数类型,参数名:参数类型...) ->函数返回值 {函数实现部分}


// 1.没有参数没有返回值

func about() -> Void {

   print("iPhone7s Plus")

}

//没有返回值的简单写法

func about1() {

   print("iPhone7s")

}

about()

let view : UIView

// 2.有参数没有返回值

func callPhone(phoneNum : String) {

    print("打电话给\(phoneNum)")

}

callPhone("+86 110")

// 3.没有参数有返回值

func readMessage() -> String {

   return"吃饭了吗?"

}

print(readMessage())

// 4.有参数有返回值

func sum(num1 : Int, num2 : Int) -> Int {

    return num1 + num2

}

sum(20, num2: 30)

/*

嵌套函数

*/

func showArray(array:[Int])

{

    for number in array

    {

        print("\(number), ")

    }

}

var number = 998;

func bubbleSort(inout array:[Int])

{

    print(number)

    func swap(inout a:Int, inout b:Int)

    {

        print(number)

        let temp = a

        a = b

        b = temp

    }

    

    let count = array.count;

    for var i = 1; i < count; i++

    {

        for var j = 0; j < (count - i); j++

        {

            if array[j] > array[j + 1]

            {

                swap(&array[j], b: &array[j + 1])

//                let temp = array[j]

//                array[j] = array[j + 1]

//                array[j + 1] = temp

            }

        }

    }

}

var arr:Array = [31, 13, 52, 84, 5]

bubbleSort(&arr)

showArray(arr)

// 1.内部参数和外部参数

//内部参数:在函数内部可以看到的参数名称,称之为内部参数

//外部参数:在函数调用时,可以看到的参数,成之为外部参数

//默认情况下从第二个参数开始,既是内部参数也是外部参数

//如果希望将第一个参数也声明称外部参数,只需要在标识符前加上外部参数的名称即可

func sum(num1 num1 : Int, num2 : Int) -> Int {

    return num1 + num2

}

//函数的重载:函数名称相同,参数不同(1.参数的类型不同 2.参数的个数不同)

func sum(num1 : Int, num2 : Int, num3 : Int) -> Int {

    return num1 + num2 + num3

}

// 2.默认参数

func makeCoffee(coffeeName : String = "拿铁") -> String {

    return "制作了一杯\(coffeeName)咖啡"

}

makeCoffee("雀巢")

makeCoffee("猫屎")

makeCoffee()

// 3.可变参数

func sum(nums : Int...) -> Int {

    var result = 0

    

    for num in nums {

        result += num

    }

    

    return result

}

sum(12, 30, 40)

sum(44,20,30,44,55,66)

// 4.引用参数

var m = 20

var n = 30

//如果形参前面有inout,则需要传递指针到函数内

func swapNum(inout m : Int,inout n : Int) {

    let temp = m

    m = n

    n = temp

}

swapNum(&m, n: &n)

print("m:\(m) n:\(n)")

// 5.函数的嵌套使用(不常用)

func test() {

    

    func demo() {

        print("demo")

    }

    

    print("test")

    

    demo()

}

test()


本文名称:13.函数的类型和基本使用
路径分享:http://myzitong.com/article/jepise.html