zoukankan      html  css  js  c++  java
  • Swift-函数

    import Foundation

    println("Hello, World!")

    //有返回值的函数

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

        return num1 + num2

    }

    println(add(2,3))

    //无返回值的函数

    func names(){

       println("xiaobai")

    }

    //调用函数

    names()

    //返回元组的函数

    func 坐标()->(Int,Int){

        return (22,33)

    }

    println(坐标())

    //有返回值,返回元组类型的函数

    func  user(id:Int)->(name: String, age:Int){

        if id > 16{

            return("dagou",11)

        }else{

            return("xiaohua",23)

        }

    }

    var userID = user(2)

    println(userID)

    //有外部参数名的函数

    func classes(name:String,age_num1 num1:Int,classesid_num2 num2:Int){

        println("名字(name),年龄(num1),学号(num2)")

    }

    classes("大牛", age_num1: 22, classesid_num2: 11)

    //使用#号能简化外部参数名

    func dog(#owner:String,#name:String,#age:Int){

        println("(owner)家的大黄狗(name)今年(age)岁了")

    }

    dog(owner: "小明", name: "大黄", age: 3)

    //带有默认参数值的形参

    func classes1(name:String, num2:Int = 22){

        println("名字(name),学号(num2)")

    }

    classes1("jack")

    classes1("dino", num2: 1)//给num2加上默认参数值之后num2相当于外部参数名,不能省略不写

    //加上下划线可以忽略外部参数名

    func classes2(name:String, _ num2:Int = 22){

        println("名字(name),学号(num2)")

    }

    classes2("kite", 33)

    //使用输入输出参数在函数内部改变函数外部的变量的值

    //输入输出参数:既能输入一个值进来又能输出一个值出去

    //定义:在参数名前面加:inout

    func change(inout num1:Int){

        num1 = 22

    }

    var a = 10

    println(a)//这里输出的a是10

    change(&a)

    println(a)//这里输出的a是22

    //不利用第三个参数交换2个参数的值

    //func changes(inout num1:Int,inout num2:Int){

    //    num1 = num1 + num2//=50

    //        num2 = num1 - num2//=50-20

    //    num1 = num1 - num2//=50-(50-20)

    //

    //}

    func changes(inout num1:Int,inout num2:Int){

        num1 = num1 ^ num2

        num2 = num1 ^ num2

        num1 = num1 ^ num2

        

    }

    var b = 30

    var c = 20

    println(changes(&b, &c))

    println(b)

    println(c)

    //函数作为参数的情况

    //第一层,参数为一个数组。

    func hasAnyMatches(numbers:[Int],condition:(Int)->Bool)->Bool{

        for num in numbers{

            if condition(num){

                return true

            }

        }

         return false

    }

    func morethanTen (num:Int)->Bool{

        if num > 10{

            return true

        }else{

            return false

        }

    }

    println(hasAnyMatches([12,22,33,1,4,3],morethanTen))

    //函数作为返回值的情况  返回函数的参数列表 ->返回函数的返回值

    func makeFunc()->(Int->Int){

        func addFive(a:Int)->Int{

            return a+5

        }

        return addFive

    }

    var func1 = makeFunc()

    println(func1(12))

  • 相关阅读:
    第一部分:并发理论基础03->互斥锁(上),解决原子性问题
    第一部分:并发理论基础02->java内存模型,看java如何解决可见性和有序性问题
    第一部分:并发理论基础01->可见性,原子性,有序性
    第五部分-并发编程模型4:CSP模型,golang的主力军
    第五部分-并发编程模型3:协程
    io模型
    容器基础4:重识docker容器
    第五部分-并发编程模型1:Actor模型
    AcWing 380. 舞动的夜晚
    AcWing 379.Vani和Cl2捉迷藏
  • 原文地址:https://www.cnblogs.com/popper123/p/4833281.html
Copyright © 2011-2022 走看看