Swift14-函数

    override func viewDidLoad() {
        super.viewDidLoad()
        /*****************Swift函数**************
         Swift函数用来完成特定功能独立的代码块;
         Swift使用一个统一的语法来表示简单的C语言风格的函数导复杂的OC语言风格的方法;
         函数声明:告诉编译器函数的的名字,返回类型及参数
         函数定义:提供了函数的实体
         */

        /*
         2.函数调用
         */
        let str1 = firstFunc(name: "Vincent", age: 24)
        print(str1)// Vincet 24

        print("\(secondFun())")
        print(secondFun())

        //元祖作为函数返回值
        //元祖:可以存储任意数据类型的数据集合,用圆括号包
        let person = (name:"lhj", age: 24, score: 100.00)
        print("name:\(person.name)")
        print("age:\(person.age)")
        print("score:\(person.score)")


        let array:[Int] = [1,6,3,8,9,2,-1]
        let bounds = thirdFun(paramArr: array)
        print(bounds)

        //没有返回参数的函数
        myFun(parameterString: "Hello")

        //外部参数
        myFun3(a: 3, b: 5)

        //可变参数
        myFun4(paras: 1,2,3,4,5)

        //常量、变量及I/O参数
        var x = 10, y = 5
        myFun5(&x, &y)
        print("x = \(x), y = \(y)")

        //函数类型及使用
        print("\(myFun6(no1: 20, no2: 10))")
        print("\(myFun6(no1: 36, no2: 6))")


        /*
         11.使用函数类型:
         在Swift中,使用函数类型就像其它类型一样,例如你可以定义一个类型为函数的常量或者变量,并将适合的函数赋值给它
         */
        let addition: (Int, Int) -> Int = myFun6//定义一个类型为函数的叫addition的常量,参数与返回值类型都是int,并让这个新变量指向myFun6
        print("\(addition(60, 2))")


        //函数做为参数传递给另一个函数
        myfun7(fun: myFun6, a: 10, b: 5)


        //函数嵌套->函数做为返回值类型
        let fun8 = myFun8(forDecrement: 30)
        print(fun8())

    }

    /*
     1.函数定义:
     定义函数用关键字func;
     定义函数的时候,可以指定一个或多个输入参数、一个返回值类型;
     每个函数都有一个函数名来描述它的功能,通过函数名以及对应类型的参数值类型来调用这个函数,函数的参数传递顺序必须与参数列表一致;
     语法如下:
     func 函数名(形参) -> 返回值类型
     {
     语句
     return parameters
     }
     */

    /*
     3.函数参数:函数可以接受一个或者多个参数,这些参数包含在函数的括号之中
     */
    func firstFunc(name: String, age: Int) -> String {
        return name + "\t" + String(age);
    }

    /*
     4.不带参数的函数
     */
    func secondFun() -> String {
        return "hello world";
    }

    /*
     5.元组作为函数返回值:
     函数的返回值可以是字符串、整型、浮点型等
     元组和数组相似,不同的是,元组里可以是任意类型,使用的是圆括号;
     可以用元组(tuple)类型,让多个值作为一个复合值返回;
     */

    func thirdFun(paramArr: [Int]) -> (max:Int, min:Int) {
        var currentMax = paramArr[0]
        var currentMin = paramArr[0]
        for value in paramArr {
            if value < currentMin {
                currentMin = value
            }
            if value > currentMax {
                currentMax = value
            }
        }
        return(currentMax,currentMin)
    }

    /*
     6.没有返回值的函数
     */
    func myFun(parameterString: String) {
        print(parameterString)
    }

    /*
     7.函数参数名称:函数参数都有一个局部参数名和外部参数名
     */
    //局部参数名:在函数的内部实现,即形参
    func myFun2(num: Int) {//其中num就是局部参数
        print(num)
    }

    //外部参数名:可以在局部参数名前指定外部参数名,中间以逗号隔开,外部参数名用于在函数调用时传递给函数的参数
    func myFun3(a firstpara: Int, b secondPara: Int) {//其中a和b就是外部参数,不能在函数内部使用,智能在调用函数时传值使用
        let c = firstpara + secondPara
        print(c)
    }


    /*
     8.可变参数:
     可变参数可以接受0个或多个值,函数调用时,可以用可变参数来指定函数参数,其数量是不确定的;
     可变参数通过在变量类型名后边加入(...)的方式来定义
     */
    func myFun4<N>(paras: N...) {
        for i in paras {
            print(i)
        }
    }

    /*
     9.常量、变量及I/O参数:
     一般默认的在函数中定义的参数都是常量参数,也就是这个参数你只可以查询,不能改变它的值;
     如果要声明一个变量参数,可以在参数定义前加inout关键字,就可以改变这个参数的值了;
     一般默认的参数传递都是传值调用的,而不是引用,所以传入的参数在函数内改变,并不影响原来的那个参数,传入的只是这个参数的副本;
     当传入的参数作为输入输出参数时,需要在参数名前加&符号,表示这个值可以被更改;
     */
    func myFun5(_ a: inout Int, _ b: inout Int) {
        let c = a
        a = b
        b = c
    }

    /*
     10.函数的类型及使用:
     每个函数都有特定的函数类型,由函数的参数类型和返回类型组成
     */
    func myFun6(no1: Int, no2: Int) -> Int {
        return no1 / no2
    }

    /*
     12.函数做为参数传递给另一个函数
     */
    func myfun7(fun: (Int, Int) -> Int, a: Int, b:Int) {
        print("输出结果:\(fun(a, b))")
    }

    /*
     13.函数嵌套:
     函数嵌套指的是在函数内定义一个新的函数,外部的函数可以调用函数内定义的函数
     */
    func myFun8(forDecrement total: Int) -> () -> Int {
        var a = 10
        func myFun8_2D() -> Int{
            a = a - total
            return a
        }

        return myFun8_2D//函数做为返回类型
    }

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值