Swift 函数
2018-03-16 本文已影响0人
BearClawr
函数
函数是执行特定任务的一段代码,并指定了一个函数名,在需要的时候可以多次调用这个代码。
函数的定义和调用
Swift 使用 func 关键字来定义函数,具体格式如下:
func 函数名(参数名1: 参数类型, 参数名2: 参数类型...)-> 返回值类型 {
函数体
return 返回值
}
注意:
- func:表示函数的关键字
- 函数名:表示函数的名称,用来简要地描述函数的功能
- 参数名:用于接收调用函数时传入的数据
- 参数类型:用来限定调用函数时传入参数的数据类型
- 返回值类型:用于限定函数返回值的数据类型
有哪几种函数
无参函数
func sayHelloWorld() -> String {
return "Hello World!"
}
多参函数
func sayHelloWorld(name: String, alreadyGreeted: Bool) -> String {
if alreadyGreeted {
return "Hello again,\(name)"
} else {
return "Hello,\(name)"
}
}
print(sayHelloWorld(name: "Tom", alreadyGreeted: true))
无返回值函数
func test1() {
print ("嘻嘻")
}
func test2() -> Void {
print ("嘻嘻")
}
func test3() -> () {
print ("嘻嘻")
}
多返回值函数
func count(string: String) -> (vowels: Int, consonants: Int, others: Int)
{
var vowels = 0, consonants = 0, others = 0
for character in string.characters {
switch String(character).lowercased() {
case "a","e","i","o","u": // 元音
vowels += 1
case "b", "c", "d", "f", "g", "h", "j", "k", "l", "m", "n", "p", "q", "r", "s", "t", "v", "w", "x", "y", "z" :
consonants += 1
default:
others += 1
}
}
return (vowels, consonants, others)
}
let total = count(string: "welcome to itcast")
print("\(total.vowels)个元音字母和\(total.consonants)个辅音字母!")
局部参数名和外部参数名
局部参数名
只能在函数本身的主体中使用,无法在调用时使用,这种参数类型名称称为局部参数名。
func someFunction(firstParameterName: Int, secondParameterName: Int)
{
// 函数体
}
外部参数名
所谓外部参数名,是指参数名的前面再增加一个参数名。如果为参数指定了外部形参
名,调用的时候就必须显式地使用,下面是带有外部参数名的基本格式:
func 函数名(外部参数名1 参数名1: 参数类型,外部参数名2 参数名2: 参数类型...) -> 返回值类型
{
函数体...
return 返回值
}
函数参数的其他用法
- 默认参数值
func sayHi(message: String, name: String = "小明") -> Void
{
print("\(name),\(message)");
}
- 可变参数
func arithmeticMean(numbers: Double) -> Double {
var total: Double = 0
for number in numbers {
total += number
}
return total / Double(numbers.count)
}
print(arithmeticMean(numbers: 1, 2, 3, 4, 5))
- In-Out(输入输出)参数:可以在函数内修改参数值,并且在函数外使用。
func swapTwoInts(a: inout Int, b: inout Int) {
let temporaayA = a
a = b
b = temporaayA
}
注意:inout 修饰的参数是不能有默认值的,也不能是有范围的参数集合,另外,一个参数一旦被 inout 修饰,就不能再被 let 修饰了。
嵌套函数
嵌套就是指写在函数里的函数。
func calculate(opr: 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 opr {
case "+":
result = add
case "-":
result = sub
default:
result = add
}
retrun result
}