Swift::6::函数

函数(Function)

函数是完成某一任务的代码块,相信大家都很熟悉。下面介绍Swift函数是如何定义,以及参数,返回值的使用方法。

函数的声明

swift 的函数声明,和很多语言都一致,是用关键字func,而参数,返回值则是可选的。比较特别的是,swift 使用 ‘->’ 来表示有返回值。

func funcName([param list]) [-> returnlist]{
    // do something
} 

函数参数

Swift 函数参数也沿用了OC的风格,不过,Swift也提供了一些新特性。比如参数的外部命名。

无参函数

非常简单,不详细说,看代码:

func playBeepNoise()
一个参数

声明参数名和类型即可,代码:

func playBeepNoiseWithDelayOf(aNumber: Int)
多个参数

使用逗号隔开,代码:

func playSpecificBeepNoiseWithDelayOf(aNumber:  Int, filename: String)
可变参数

类C风格的参数,参数个数必须为统一类型,但不限个数,代码:

func printStringsJoinedWithSpaceAfterEach(words: String...)
{
    var result = ""
    for word in words
    {
        result += word
        result += " "
    }

    println(result)
}

这种参数的使用是有限制的,每个函数只能有一个这种声明方式的参数,而且和其他参数混合使用时,必须放置在最后,如:

func printStringsJoinedWithSpaceAfterEach(aNumber: Int, words: String...)  //Is Valid
func printStringsJoinedWithSpaceAfterEach(words: String..., aNumber: Int)  //Is Not Valid

命名参数

Swift 除了可以使用常规的参数外,还对参数命名的使用进行了扩展。比如命名内部参数和外部参数。

命名内部参数

在参数前加‘#’号,感觉和平时一样。

func playBeepNoise(#msDelay: Int)
 
//Called like this
playBeepNoise(msDelay: 42)
命名外部参数

有时,为了增加参数可读性, 可以给参数一个长长的描述性名字,但在函数体内只是使用较短命名的参数,则可以使用。如:

func playBeepNoise(withDelayInMilliseconds msDelay: Int)
{
    println(String(msDelay))
}
 
//Called like this
playBeepNoise(withDelayInMilliseconds: 42)

返回值

Swift 支持无返回值,单值返回和多值返回。

单值返回

比较简单:

func addFiveToThisNumber(number: Int) -> Int
多值返回

其实就是使用了一种新的数据类型Tuple,如果玩过go语言,相信大家也不会陌生,看代码:

func AddAndSubtractTenFromNumber(number: Int) -> (small: Int, large: Int)
{
    let smallResult = (number - 10)
    let largeResult = (number + 10)
    
    return (smallResult, largeResult)
}

调用:

let answer = AddAndSubtractTenFromNumber(24)
 
answer.small
answer.large
可选多值返回

前面介绍过可选型,现在Swift 也支持这中类型的返回,毕竟,多值返回可能是nil,比如:

func giveTwoValuesIfValid(input: Int) -> (one: Int, two: Int)?

本文参考:http://www.codingexplorer.com/functions-swift-parameters-return-types/

转载于:https://my.oschina.net/suda/blog/340184

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值