《Swift 权威指南》——第6章,第6.2节返回多值的函数

简介:

本节书摘来自异步社区《Swift 权威指南》一书中的第6章,第6.2节返回多值的函数,作者 李宁,更多章节内容可以访问云栖社区“异步社区”公众号查看

6.2 返回多值的函数

不管是数学上的定义,还是各种语言中的实现,函数都只能返回一个值,如果非要返回多个值,就返回一个对象,然后将要返回的值以字段、属性或方法形式体现,但这也是返回一个值。不过在Swift函数中,却彻底颠覆了我们对函数的印象。Swift函数是真真正正地可以返回多个值。

可能有的读者会想到,在前面学习数据类型时,有一个元组类型,这个类型可以同时表示多个值,难道函数返回的是这个类型的值?没错,Swift函数就是通过元组类型实现返回多个值的功能的。

其实函数返回元组类型和返回其他类型在写法上没什么区别,只是“→”后面需要用圆括号定义元组类型,定义方式如下。

(returnValue1:valueType1, returnValue2:valueType2,...)

下面是一个典型的返回元组类型的例子。在这个例子中,统计了一个字符串中有多少个元音字母,有多少个辅音字母,有多少个其他字符。很明显,这需要通过元组返回3个值。函数的实现调用代码如下。

func count(string: String) -> (vowels:Int, consonants:Int, others:Int)
{
    var vowels = 0
    var consonants = 0
    var others = 0

    for c in string
    {
        switch String(c).lowercaseString
            {
        case "a", "e", "i", "o", "u":
            ++vowels      //  元音计数器加1
        case "b", "c", "d","f", "g", "h", "j", "k", "l", "m","n", "p", "q", "r", "s", "t", "v", "w", "x", "y", "z":
            ++consonants  //  辅音计数器加1
        default:
            ++others      //  其他字符计数器加1
        }
}
//  返回元组值
    return (vowels, consonants, others)

}
//  调用count函数
let total = count("some arbitrary string!")
println("\(total.vowels) vowels and \(total.consonants) consonants")
执行这段代码,会输出如下内容。

6 vowels and 13 consonants
相关文章
|
4天前
|
Swift iOS开发 Kotlin
苹果iOS新手开发之Swift中实现类似Kotlin的作用域函数
Swift可通过扩展实现类似Kotlin作用域函数效果。如自定义`let`, `run`, `with`, `apply`, `also`,增强代码可读性和简洁性。虽无直接内置支持,但利用Swift特性可达成相似功能。
23 7
|
1月前
|
Swift C++ 索引
Swift开发——简单函数实例
函数是编程的基础,用于封装特定功能的代码。它们有关键词func、函数名、参数列表(可为空)和返回类型。多返回值可通过元组、数组、inout参数或可选类型实现。例如,返回元组 `(value1, value2)`,数组 `[value1, value2]` 或使用可选数组 `[[Double]]?`。函数可以作为其他函数的参数,类似闭包或Lambda表达式。在Swift中,示例展示了通过元组、带索引的元组、数组和可选类型返回多个值的函数。还演示了如何使用inout参数交换变量值。
32 5
Swift开发——简单函数实例
|
2月前
Swift4.0判断本函数是否在其它类有相同的方法
Swift4.0判断本函数是否在其它类有相同的方法
26 0
|
2月前
|
存储 API Swift
【Swift开发专栏】Swift函数与闭包的实战应用
【4月更文挑战第30天】本文介绍了 Swift 中函数和闭包的实战应用。首先,函数的基本使用包括定义、参数与返回值、函数类型以及高级技巧如嵌套函数。接着,讨论了闭包的语法,包括无名函数、作为函数参数、简写形式和尾随闭包。最后,展示了函数和闭包在实战中的应用,如排序过滤集合和处理异步任务的回调。
|
2月前
|
存储 Swift
Swift 语言:什么是闭包(Closure)?它们与函数的区别是什么?
Swift 语言:什么是闭包(Closure)?它们与函数的区别是什么?
70 1
|
2月前
|
Swift
Swift中的函数
Swift中的函数
31 1
|
2月前
|
存储 Swift
Swift中,函数和闭包
Swift中,函数和闭包
48 1
|
9月前
|
Swift iOS开发
23 Swift中如何定义和使用函数
Swift中如何定义和使用函数
70 0
|
10月前
|
Swift
Swift Debug 和 Release 中 print() 函数调试切换
Swift Debug 和 Release 中 print() 函数调试切换
56 0
|
Swift C语言
深入浅出Swift(3)—— 函数
深入浅出Swift(3)—— 函数
72 0