Swift底层原理探索--函数

目录




函数的定义

//无参函数
func pi() -> Double {
   
    return 3.14
}
//带参函数
func sum(v1: Int, v2: Int) -> Int {
    // 形参默认是let, 并且只能是let,所以不用纠结let or  var
    return v1 + v2
}
//函数的调用
sum(v1: 10, v2: 20)

//无返回值  下面三种等价
func sayHello() -> Void {
   
    print("Hello")
}
func sayHello2() -> () {
   
    print("Hello")
}
func sayHello3() {
   
    print("Hello")
}

【返回目录】

隐式返回

如果整个函数体是一个单一表达式,那么函数会隐式(自动)返回这个表达式

//隐式返回
func sum2(v1: Int, v2: Int) -> Int {
    // 函数体内只有一条语句,便可以不用写return, 如果有多条语句,则必须通过 return关键字来返回
     v1 + v2
}
//函数的调用
sum2(v1: 10, v2: 20)

【返回目录】

返回元组:实现多返回值

//通过元祖实现多返回值,将多个返回值整理到一个元祖数据结构中进行一块返回
func calculate(v1: Int, v2: Int) -> (sum: Int, difference: Int, average: Int) {
   
    let sum = v1 + v2
    return (sum, v1 - v2, sum >> 1)
}

let result = calculate(v1: 20, v2: 10)
result.sum
result.difference
result.average

【返回目录】

函数文档的注释

/// 求和【概述】
///
/// 将2个整数相加【更详细的描述】
///
/// - Parameter v1: 第一个整数
/// - Parameter v2: 第二个整数
/// - Returns: 2个整数的和
///
/// - Note: 传入两个整数即可【批注】
func sum(_ v1: Int, _ v2: Int) -> Int {
   
    v1 + v2
}

函数文档的注释需要严格按照上面的模版来填写。苹果官方非常建议我们对函数进行详细的文档注视,有助于提高代码的可读性。注释生成的效果如下,通过option键+点击函数名称调出。
在这里插入图片描述
更详细的关于函数文档注释请参考苹果官方提供的接口设计规范

【返回目录】

参数标签

//函数定义里面,通过形参time的语义,很容易理解传进来参数的性质或者作用
func goToWork(at time: String) {
   
    print("This time is \(time)") 
}
//函数调用的时候,实际参数取代了time,
goToWork(at: "10:00")

上例中的goToWork函数,参数拥有两个标签attime,其中time作为为形参,在函数体内部实现中被用来传递参数,而at则是在函数调用的时候使用。
上面的示例可感觉到,通过参数标签,使得函数的定义和调用,都非常符合口语习惯,利用苹果的提供的这个特性,参照我们正常的语言习惯来合理地设置参数标签,可以很好地提升代码的可读性。这也符合了苹果的API设计准则。

func sum(_ v1: Int, _ v2: Int) -> Int {
   
    v1 + v2
}
sum(10, 20)

通过_来省略参数标签,可以是的函数的调用无需参数数名,是的代码很精简。但是对于这个一点的使用需要结合实际情况,不要为了精简代码而影响到代码的可读性,从而给后期的维护带来不便。

【返回目录】

<

  • 0
    点赞
  • 3
    收藏
    觉得还不错? 一键收藏
  • 1
    评论
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值