Swift3之函数(二)

Swift3之函数(一)简书地址
Swift3之函数(一)CSDN地址

进阶部分


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函数中可以声明实现另一个函数
  • 0
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值