本教程属于Swift系列
你的程序的代码被组织成函数。
一个函数是用func 关键字来声明的。
func bark() {
print("woof!")
}
函数可以分配给结构、类和枚举,在这种情况下我们称之为方法。
一个函数是用它的名字来调用的。
bark()
一个函数可以返回一个值。
func bark() -> String {
print("woof!")
return "barked successfully"
}
并且可以把它赋值给一个变量。
let result = bark()
一个函数可以接受参数。每个参数都有一个名称和一个类型。
func bark(times: Int) {
for index in 0..<times {
print("woof!")
}
}
参数的名称是函数内部的。
当我们调用函数时,我们使用参数的名称,以传递它的值。
bark(times: 3)
当我们调用函数时,我们必须传递所有定义的参数。
这里有一个接受多个参数的函数。
func bark(times: Int, repeatBark: Bool) {
for index in 0..<times {
if repeatBark == true {
print("woof woof!")
} else {
print("woof!")
}
}
}
在这种情况下,你以这种方式调用它。
bark(times: 3, repeat: true)
当我们谈论这个函数时,我们不叫它bark() 。我们称它为bark(times🔁) 。
这是因为我们可以有多个具有相同名称的函数,但参数集不同。
你可以通过使用_ 关键字来避免使用标签。
func bark(_ times: Int, repeatBark: Bool) {
//...the function body
}
所以你可以用这种方式来调用它。
bark(3, repeat: true)
在Swift和iOS的API中,第一个参数没有标签,而其他参数有标签是很常见的。
如果你能很好地设计函数和参数的名称,这将是一个很好的、富有表现力的API。
你只能从一个函数中返回一个值。如果你需要返回多个值,通常会返回一个元组。
func bark() -> (String, Int) {
print("woof!")
return ("barked successfully", 1)
}
而且你可以把结果赋给一个元组。
let (result, num) = bark()
print(result) //"barked successfully"
print(num) //1
函数可以嵌套在其他函数里面。当这种情况发生时,内部函数对外部函数是不可见的。