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))

  • 相关阅读:
    P2207 Photo
    P1022 计算器的改良
    P1003 铺地毯
    P3014 [USACO11FEB]牛线Cow Line && 康托展开
    P4180 【模板】严格次小生成树[BJWC2010]
    P2776 [SDOI2007]小组队列
    P2426 删数
    P1948 [USACO08JAN]电话线Telephone Lines
    P1978 集合
    P1564 膜拜
  • 原文地址:https://www.cnblogs.com/popper123/p/4833281.html
Copyright © 2011-2022 走看看