在swift语言中,定义函数的一般可分为如下几种类型
1.基本类型
func 函数名称(参数名称: 参数类型) -> 返回值类型{
函数具体操作
由于初始设定了返回值的类型,其中应当包含 return操作
}
后续执行函数
let a = 函数名称(参数名称: 值)
需要注意与c语言不同,swift中函数的使用往往需要中往往需要重复参数名与参数值。
2.无返回值类型
func 函数名(参数名称: 参数类型)
{ 具体操作 }
这种情况一般不涉及数值的操作。
3.多个参数的类型
func 函数名(参数1: 类型1, 参数2: 类型2) -> 返回值的类型{
具体操作 }
4.多个返回值的类型
func 函数名(参数名: 参数类型) ->(返回值名称1: 类型1,返回值2名称: 类型2){
return(返回值形参1,返回值形参2)
}
这里值得注意的是,这种情况下,该函数运行之后返回的实际上是一个字典,即(返回值名称1: 类型1,返回值2名称: 类型2)。这一点在苹果的官方文档中似乎没有明确指出。
在下面编写了一段无意义的试验性代码可供参考
import UIKit
func haha(kat: Int) ->(a: Int,b: Int){
let aa = kat*2
let bb = kat*3 return(aa,bb)
}
let x=haha(kat: 3).a
let y=haha(kat: 3).b
let z=haha(kat: 3)
最终x=6,y=9,而z的类型为一个字典
示意图5.隐式返回值
这种类型一般用于该函数作用为输出一段string。这一情况虽然声明了返回值的类型,但函数体内无需return操作,而可以实际返回字符串值。
func greet(for person: String) ->String{
"Hello, " + person + "!"
}
print(greet(for: "Mr.Green"))
// 结果即为 "Hello, Mr.Green!"
函数在使用过程中,经常输入参数名称往往不是那么的方便,swift也提供了更为简洁的方法,即在声明函数时,在将要传递的函数名前加上一个“_"符号。
func someFunc(_first: Int, second: Int){
......
} someFunc(1,second: 2)
此外,swift还提供了非常灵活的直接作用于输入参数的方法。这种情况无需返回操作,即可修改传递参数的值。
func swapTwoInts(_ a: inout Int, _ b: inout Int) {
let temporaryA = a
a = b
b = temporaryA
}
var someInt = 3
var anotherInt = 107
swapTwoInts(&someInt, &anotherInt)
print("someInt is now \(someInt), and anotherInt is now \(anotherInt)")
//someInt is now 107, and anotherInt is now 3"
注意,这里在函数的执行过程中涉及类似于取地址的操作。
更多详细内容可以参考apple的官方文档
https://docs.swift.org/swift-book/LanguageGuide/Functions.html
部分代码来自apple
网友评论