进阶部分
1.函数参数 -- 外部参数名 2.下滑线 -- _ 3.函数参数 -- 设置参数默认值 4.函数类型 -- 函数作为函数的参数,返回值 5.函数嵌套
1.函数参数 - 外部参数名
func 函数名(外部参数名 局部参数名: 参数类型) {}
要注意的是: -- 外部参数名只能外部使用,内部参数名只能内部使用 -- 并非每一个参数都需要设置外部参数名,未设置外部参数名的参数可以当作外部参数名和局部参数名一样 也就是对想用对参数用,不想用的不用😄
// 字符串拼接
// 外部参数名是为了让参数在外部调用时能明确参数的含义,内部调用时参数简短已用
// - s1: 外部参数名为firstStr 内部只能使用s1,外部只能使用 firstStr
// - targetStr: 内外都是用 targeyStr
func appendString(firstStr s1 : String, targetStr : String) -> String
{
return s1 + targetStr;
}
print(appendString(firstStr: "123", targetStr: "456"));
2.下滑线 _
外部参数如果使用
_
,在外部掉用函数时候,会省略形参的名字
// 字符串拼接
//
// - s1: 外部参数名为`_`内部只能使用s1,外部无参数名
// - targetStr: 内外都是用 targeyStr
func appendString(_ s1 : String, targetStr : String) -> String
{
return s1 + targetStr;
}
print(appendString("123", targetStr: "456"));
3.函数参数 - 设置参数默认值
func 函数名(参数 :类型=默认值){}
说明 1:如果参数不赋值,参数值就采用默认值 2:如果一个参数有默认值,那么在调用的时候就不一定需要传入参数,可以使用默认值 3:一般在声明一个函数的时候,都把有默认参数值的参数放到最后,而必须赋值的参数放在前面。
// 测试参数的默认值
// 建议带默认值的参数放在最后,但是并不代表你不可以放前面,只是为了代码的可读性放后面比较好
// - value1: 没有默认值的参数在方法调用时必须传值
// - value2: 有默认值的参数在方法调用时可以不传值,使用默认值
// - value3: 没有默认值的参数在方法调用时必须传值
// - value4: 有默认值的参数在方法调用时可以不传值,使用默认值
func testDefaultValue(value1: Int,value2: Int = 2,value3: Int,value4: Int = 4)
{
let sum = value1 + value2 + value3 + value4;
print(sum);
}
testDefaultValue(value1: 1, value3: 3)
testDefaultValue(value1: 1, value2: 2, value3: 3)
testDefaultValue(value1: 1, value3: 3, value4: 4)
testDefaultValue(value1: 1, value2: 2, value3: 3 , value4: 7)
/*
不要再定义以上调用的四种函数的实现,否则会发生未知错误❌
要么会发生方法重复直接报错,要么就是会发生方法覆盖。
具体会怎样可以自己试验,这里我就不在举例说明了,情况太乱,
越说会让人感觉越复杂
*/
4.函数类型
在 Swift 中,使用函数类型就像使用其他类型一样。例如,你可以定义一个类型为函数的常量或变量,并将适当的函数赋值给它
类型公式: 就是把函数的公式,去除
func
,去除参数名
,去除{}
的剩余部分
(参数类型1,参数类型2...)->返回值类型
func sum(a: Int, b: Int) -> Int {
return a + b
}
var addition: (Int, Int) -> Int
addition = sum
print("输出结果: \(addition(40, 89))")
既然有函数类型,那么函数类型也可以作为函数参数及返回值
//函数作为参数
func sum(a: Int, b: Int) -> Int {
return a + b
}
//sunNumber 是一个函数类型,调用时传入一个函数
func test(sumNumber: (Int, Int) -> Int, a: Int, b: Int) {
print("输出结果: \(sumNumber(a, b))")
}
test(sumNumber: sum, a: 10, b: 20)
//函数作为返回值
func test() ->(Int) -> Int {
//内嵌函数
func add(a:Int) -> Int{
return a+1;
}
return add;
}
test()(20)
5.函数嵌套
上面的示例使用到了内嵌函数,也就是swift函数中可以声明实现另一个函数
你可以继续学习Swift3之闭包