函数定义
- 格式:func 函数名称(参数名:参数类型, 参数名:参数类型,...) -> 函数返回值 {函数实现部分}
无参无返回值
func say()->Void
{
print("Hello")
}
func say1() // 如果没有返回值可以省略"->Void"
{
print("Hi")
}
say()
say1()
无参有返回值
func info() -> String
{
return "name = hjq, age = 28"
}
print(info())
有参无返回值
func sayWitchName1(name:String, age:Int) -> Void {
print("hello \(name), I'm \(age) years old")
}
sayWitchName1(name: "baobao", age: 20)
有参有返回值
func info(name:String, age:Int) -> String
{
return "name = \(name), age = \(age)"
}
print(info(name: "HaRi", age: 26))
函数类型
- Swift的函数类型是
由函数的参数类型和返回值类型组成
的,类似于C语言的指向函数的指针,类似于OC语言的block。 - 可以利用函数类型定义函数变量和常量
// 这两个函数类型为: (Int, Int) -> Int
func sum(a: Int, b: Int) -> Int
{
return a + b
}
func sub(a: Int, b: Int) -> Int
{
return a - b
}
// 可以利用函数类型定义函数变量和常量
var funcP:(Int, Int) -> Int = sum
//funcP = sub // 赋与同一类型都可以
print(funcP(10,20)) //输出30
funcP = sub
print(funcP(10,20)) //输出-10
- 函数类型可以作为函数的参数
func calFunc(a: Int, b: Int, Option:(Int, Int) -> Int) -> Int
{
return Option(a, b)
}
print(calFunc(a: 10, b: 20, Option: sum)) //输出30
print(calFunc(a: 10, b: 20, Option: sub)) //输出-10
- 函数类型可以作为返回值
func max(a: Int, b: Int) -> Int
{
return a > b ? a : b
}
func min(a: Int, b: Int) -> Int
{
return a > b ? b : a
}
func chooseFunc(getMax:Bool) -> (Int, Int) -> Int
{
return getMax ? max : min
}
var funcP2:(Int, Int) -> Int = chooseFunc(getMax: true)
print(funcP2(10, 20)) //输出20
函数参数
- 默认参数:在定义函数的时候给某个参数赋值, 当外部调用没有传递该参数时会自动使用默认值
func joinString2(s1:String ,toString s2:String, jioner s3:String = "默认值") -> String
{
return s1 + s3 + s2
}
print(joinString2(s1: "hello", toString: "xiaohange")) //输出:hello默认值xiaohange
- 传递指针:如果想在函数中修改外界传入的参数,需要inout关键字,这会传入参数本身而不是参数的值
func swap3(a: inout Int,b: inout Int)
{
let temp = a
a = b
b = temp
}
var x1 = 10
var y1 = 20
print("交换前 x1 = \(x1), y1 = \(y1)")
swap3(a: &x1, b: &y1)
print("交换后 x1 = \(x1), y1 = \(y1)")
/**
输出结果:
交换前 x1 = 10, y1 = 20
交换后 x1 = 20, y1 = 10
*/
- 变参函数(参数个数不确定):只能放到参数列表的最后一位, 变参必须指定数据类型, 变参只能是同种类型的数据
func add2(nums:[Int]) -> Int {
var sum = 0
for num in nums {
sum += num
}
return sum
}
print(add2(nums: [1,2,3])) //输出6
func add3(nums:Int...) -> Int
{
var sum = 0
for num in nums {
sum += num
}
return sum
}
print(add3(nums: 1,2,3)) //输出6
函数参数前的"_"
- 函数参数前的"_"表示调用时可忽略该参数名称,如下
func someFunction(_ firstParameterName: Int, secondParameterName: Int) {
// 在函数体内,firstParameterName 和 secondParameterName 代表参数中的第一个和第二个参数值
}
调用方式:someFunction(1, secondParameterName: 2)
网友评论