基础语法之函数

1、简单函数

func add(a:Int ,b:Int) -> Int{
    return a+b
}
//add 是一个函数名,剩下()里是参数和对应的参数所属的类型,->是返回参数类型
print("1+2=\(add(a:1,b:2))")    //输出 1+2=3

2、无参函数

func sayHello() -> String{
    return "hello"
}
print(sayHello())

3、无返回值函数

func welcom() {
    print("welcom")
}
welcom()
func welocm2() -> (){
    print("welcome2")
}
welocm2()
func welcome3() -> Void{
    print("welcome3")
}
welcome3()

4、多个返回值函数

func studentInfo(id: String) -> (name: String, age: Int, sex: String){
    var name = "lili"
    var age = 13
    var sex = "man"
    if id == "lili" {
        name = "lele"
        age = 23
        sex = "woman"
    }
    return (name, age, sex)
}

print(studentInfo(id: "lili"))
let people = studentInfo(id: "lili")
print(people.name)

5、外部参数函数

以上的a、b、id都是在函数内部使用的,这些叫做局部参数名
//如果我们在这些参数名前面再加一个参数名,那前面加的这个参数名就要给外部参数,用的时候必须显示出来
例如

func add2(num1 a: Int, num2 b: Int) -> Int{
    return a + b
}
print(add2(num1: 1, num2: 2))

6、含有默认参数的函数

func sayWord(message: String, name: String = "lili") {
    print(message, name)
}
sayWord(message: "hello")
sayWord(message: "hi", name: "gg")

7、可变参数的函数

一个可变参数可以接受0个或者多个指定类型的值,函数调用时,使用可变参数来指定函数可以被传入

func addSum(nums: Double...) -> Double{
    var sum: Double = 0
    for i in nums {
        sum += i
    }
    return sum
}
print(addSum(nums: 1,2,4,5,6,78,9))

8、In - Out(输入输出)函数

一般参数仅仅是在函数内可以改变的,当一个函数执行完后变量就会被销毁,如果想通过一个函数可以修改参数值,并且让这个参数调用结束后依然存在

func testInout(a: inout Int, b: inout Int){
    a = 1
    b = 2
}
func testInout2(a: inout Int, b: inout Int){
    a += 1
    b += 2
}
var numA = 100
var numB = 30
testInout(a: &numA, b: &numB)
print("numA = \(numA), numB = \(numB)")
testInout2(a: &numA, b: &numB)
print("numA = \(numA), numB = \(numB)")
testInout2(a: &numA, b: &numB)
print("numA = \(numA), numB = \(numB)")

9、嵌套函数

前面定义的函数都是一个全局函数,定义在全局的作用域中,那我们还有一种函数是定义在另一个函数里面,对外是不可见的,但是可以被外围函数调用的

获取数组中最大的值

func getMaxFromArray(arr: Array) -> Int{
    func compareMax(a: Int, b: Int) -> Int{
        if a > b {
            return a
        }
        return b
    }
    
    var max = 0
    for i in arr {
        max = compareMax(a: max, b: i)
    }
    return max
}

var arr: Array = [3,7,2,8,4,2,7,3,6,8,4,3,6,3,23]
print(getMaxFromArray(arr: arr))

计算器

func calculator(str: String) -> (Int,Int) -> Int{
    func add(a: Int, b: Int) -> Int{
        return a + b
    }
    func sub(a: Int, b: Int) -> Int{
        return a - b
    }
    
    var result:(Int, Int) -> Int
    switch str {
    case "+":
        result = add
    default:
        result = sub
    }
    return result
}

other

func maxMin() -> (Int,Int){
    return (Int.min,Int.max)
}

maxMin().0
maxMin().1

func add2(x:Int,increment:Int = 2) -> Int{
    return x+increment
}

add2(x:2)

func calculate(x:Int , y: Int ,method : (Int,Int) -> Int) -> Int{
    return method(x,y)
}

func xxx(x: Int,y: Int) -> Int{
    return x*y
}

calculate(x: 3,y: 4,method: add)
calculate(x: 3,y: 4,method: xxx)

你可能感兴趣的:(基础语法之函数)