函数(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/