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

 

posted on 2015-09-23 19:14  popper小P  阅读(174)  评论(0编辑  收藏  举报