Swift系列6-函数

函数

函数的定义:
使用关键字func,可以指定一个或者多个参数和一个返回值类型
每个函数都有一个函数名来描述他的功能,通过函数名和对应的参数来调用这个函数,函数传递的参数顺序必须和参数列表相同.
函数传递的实参和形参类型必须一致,->后定义函数的返回值
如果要重写父类某个方法需要在func关键字前面加override关键字
主要类型有:
1,无参数,无返回值
2,有参数,无返回值
3,有参数,有返回值(元组也可作为返回值,多参数返回值)
4,可变参数(使用… 可以传入多个相同类型的参数),有返回值(无返回值)
5,实例方法和类方法
6,函数既可作为形参也可以作为返回值

函数一般形式:无参数,无返回值

1
2
3
4
5
func addView(){

}
//
self.addView()

函数一般形式:有形参,有返回值

1
2
3
4
5
func myNumber(number:Int) -> Int {
return number
}
//
self.myNumber(number: 10)

在调用时省略形参 函数写法

1
2
3
4
5
func getName(_ name:String) -> String {
return name
}
//调用
self.getName("from name")

可变形式参数

1
2
3
4
5
6
7
8
9
func moreNumber(_ numbers: Double...) -> Double {
var total:Double = 0
for num in numbers {
total += num
}
return total
}
//
self.moreNumber(1.1,2.3,2.3)

输出输入的形式参数:inout

1
2
3
4
5
6
7
8
9
func changeSomething(_ a: inout Int,_ b: inout Int) {
let tmp = a
a = b
b = tmp
//函数内部形参交换值,实参也会被修改
}
//调用
var x = 10,y = 5
changeSomething(&x, &y)//修改后的值:x = 5,y = 10

隐式返回

如果函数只有一个单一的语句,函数会隐式返回这个表达式

1
2
3
4
5
func timeNow(_ time:String) -> String {
"\(time) from now"
}
//
print(timeNow("2021-3-12-4-25"))

默认形参的函数

调用函数时,不需要传递形参

1
2
3
4
5
func defaultNumber(number: Int = 100) -> Int {
return number
}
//调用
self.defaultNumber() //返回值是100

重写父类方法

使用override修饰func 函数

1
2
3
override func tableView(_ tableView: UITableView, didSelectRowAt indexPath: IndexPath) {
tableView.deselectRow(at: indexPath, animated: true)
}

多参数返回:元组

1
2
3
4
5
6
7
8
9
func minMax(_ number1: Int,_ number2 : Int) -> (min : Int, max:Int) {
if number1 > number2 {
return (number2,number1)
}else{
return (number1,number2)
}
}
let answer = self.minMax(10, 20)
print("min = \(answer.min) and max = \(answer.max)")

可选元组返回

1
2
3
4
5
func other() -> (name:String,age:Int)? {
return nil
}
//
self.other() as Any

类方法

在函数前面添加class关键字

1
2
3
class func getTheTrue(){

}

The end