知识点:
- swift函数的不同点
- 无返回值的函数的三种写法
- 返回元组数据
- 外部参数名
- 外部参数名的简写
- 默认参数值,有默认参数值的时候,系统会自动的将参数名当成外部参数名。
- 在有默认的参数值的情况下,增加一个下划线_,系统会忽略掉外部参数名
- 函数的形参默认是常量,想要在函数体的内部改变形参的值,将其设置成var即可
- 输入输出参数及其注意点
示例代码:
//: Playground - noun: a place where people can play import UIKit // sum函数名,num1和num2参数名,箭头后面的Int是返回类型 func sum(num1: Int, num2: Int) -> Int { return num1 + num2 } sum(1, 2) // 无返回值的函数的三种写法 func noRe1() -> Void {} func noRe2() -> () {} func noRe3(){} // 返回元组数据 func getPoint() -> (Int, Int) { return (10, 10) } func getPerson(id: Int) -> (name: String, age: Int){ if id > 0 { return ("jack", 20) } else { return ("nobody", 10) } } var person = getPerson(10) println("name: \(person.name), age: \(person.age)") // 外部参数名,这里分别为name,age,no设置了外部参数名,stu_name,stu_age,stu_no // 作用,方便阅读 func addStudent(stu_name name:String, stu_age age:Int, stu_no no:Int) { println("name: \(name), age: \(age), no:\(no)") } addStudent(stu_name: "jack", stu_age: 10, stu_no: 20) // 外部参数名的简写,在内部形参名的前面加上#号,这样内部形参名就也可以充当外部参数名 func addStudent2(#name: String, #age: Int, #no: Int) { println("name: \(name), age: \(age), no:\(no)") } addStudent2(name: "Tom", age: 20, no: 222) // 默认参数值 // 这里给age了一个默认值,所以调用的时候,不写也行 // 有默认参数的形参,系统会给其提供一个外部参数名,和内部形参参数名相同 func addStudent3(#name: String, age: Int = 20) { println("name: \(name), age: \(age)") } addStudent3(name: "Smith") addStudent3(name: "Hello", age: 10) // 在有默认参数名前增加一个下划线_,系统会忽略掉外部参数名 func addStudent4(name: String, _ age: Int = 20) { println("name: \(name), age: \(age)") } addStudent4("A", 2) // 函数的形参默认是常量,如果想在函数的内部修改形参的值,将形参设置成var即可 func addStr(var initStr: String, suffix: String, num: Int) -> String { for _ in 0..<num { initStr += suffix } return initStr } addStr("A", "B", 10) // 输入输出参数,类似于C中的根据地址改变函数中变量的值 /* 注意: 1、不能传入常量和字面量(比如10)数,因为他们都是不可更改的 2、传递参数时候,必须在实参的前面加上& 3、输入输出参数不能有默认值 4、输入输出参数不能使可变参数 5、输入输出参数不能再使用let、var修饰(inout和let、var不能共存) */ func change(inout num: Int) { num = 10 } var a = 20 // 凡是输入输出参数,调用的时候前面都要增加&符号 change(&a) println(a) // 如何在不使用第三个参数的情况下,交换两个数 func swap(inout a:Int, inout b:Int) { a = a + b b = a - b a = a - b } // 算法2 func swap1(inout a:Int, inout b:Int) { // 异或运算的特点,相同的会抵消 a = a ^ b b = a ^ b a = a ^ b } var temp1 = 10 var temp2 = 20 swap(&temp1, &temp2) println("temp1 = \(temp1), temp2 = \(temp2)") var temp3 = 30 var temp4 = 40 swap1(&temp3, &temp4) println("temp1 = \(temp3), temp2 = \(temp4)") // 输入输出函数的使用价值 // 举例:不用返回值也可以计算出和与差 // 有返回值写法 func sumAndMinus(num1: Int, num2: Int) -> (sum: Int, minus: Int) { return (num1 + num2, num1 - num2) } var result = sumAndMinus(10, 20) result.sum result.minus // 输入输出函数写法 func sumAndMinus2(num1: Int, num2: Int, inout sum:Int, inout minus:Int) { sum = num1 + num2 minus = num1 - num2 } var sum1 = 0 var minus1 = 0 sumAndMinus2(20, 10, &sum1, &minus1) sum1 minus1
时间: 2024-10-13 02:47:54