《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
时间: 2024-10-30 21:54:33

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

《Swift 权威指南》——导读

目 录 内容提要 前言 第1章 未来的iOS开发语言--Swift 语言介绍 第2章 千里之行始于足下-- Swift语言基础 第3章 万丈高楼平地起-- 基本操作符 第4章 此字典非彼字典--数组和字典 第5章 千变万化的程序--控制流 第6章 丰富多彩的功能--函数 6.1节函数的定义和调用6.2节返回多值的函数6.3节扩展参数6.4节扩展参数和内部参数合二为一6.5节默认参数值6.6节可变参数6.7节常量和变量参数6.8节输入输出参数6.9节函数类型6.10节嵌套函数6.11节小结 第7章

《Swift 权威指南》——第6章,第6.1节函数的定义和调用

第6章 丰富多彩的功能--函数Swift 权威指南Swift语言为函数提供了丰富多彩的功能.但从功能上来说,Swift函数和其他语言的函数相比是非常强大的,在后面章节要介绍的方法与函数基本上一致.不过在本章先不讨论方法的细节,只介绍函数的各种功能和使用方法. 本章要点 函数的定义和调用返回多种的函数扩展参数扩展参数和内部参数使用同一个名字默认参数值可变参数常量和变量参数输入/输出参数函数类型嵌套函数 6.1 函数的定义和调用源代码文件:src/ch06/function/function/mai

《Swift权威指南》目录及其源代码下载

源代码 目录 第1章  未来的iOS开发语言Swift 语言介绍 1 1.1  Swift语言的前世今生 1 1.2  Swift到底是怎样的一种语言 2 1.3  Swift开发环境搭建 5 1.4  创建Swift工程(OS X和iOS平台) 6 1.5  瞧一瞧Swift到底长啥样 8 1.6  所见即所得的Playground 11 1.7  小结 13 第2章  千里之行始于足下--Swift语言 基础 14 2.1  Swift语句和分号 14 2.2  变量和常量 15 2.2.1

《Swift 权威指南》——第6章,第6.9节函数类型

6.9 函数类型 Swift语言支持定义函数类型(类似于C语言的函数指针).一个函数类型需要指定下面3个要素. 函数参数个数.函数参数类型.函数返回值.函数类型和其他数据类型的使用方法完全相同,在冒号(:)后面指定类型.定义函数类型时除了不需要指定参数名和函数体外,和函数定义完全相同. 下面的代码定义了两个函数类型变量(fun1和fun2). var fun1: (inout String, Int) -> String var fun2: (String, String...) -> Str

《Netty 权威指南》样章

声明:本文是<Netty 权威指南>的样章目录,感谢博文视点授权并发编程网站发布样章,禁止以任何形式转载此文. 第 2 章  NIO入门 在本章节,我们分别对JDK的BIO.NIO和JDK1.7最新提供的NIO2.0的使用进行详细说明,通过流程图和代码讲解,让大家体会到随着Java IO类库的不断发展和改进,基于Java的网络编程会变得越来越简单,随着异步IO功能的增强,基于Java NIO开发的网络服务器甚至不逊色于采用C++开发的网络程序. 本章主要内容包括:  传统的同步阻塞式IO编程

《Swift 权威指南》——第6章,第6.11节小结

6.11 小结尽管函数不是一个程序中必须的要素,但有了函数,可以让代码更容易理解.函数是功能封装的最基本单元.在后面章节要介绍的类.方法.属性等元素都或多或少有一些函数的影子. 1个人认为Swift应该加入这个功能,就是当使用扩展参数时可以改变参数的指定顺序.因为通过扩展参数名完全可以恢复正确的参数调用顺序.2很多面向对象语言并不支持方法的默认参数,在这种情况下,可以使用方法的重载来实现默认参数值的功能.不过这仍然没有默认参数值方法.所以如果语言支持默认参数值,应尽量使用默认参数值.

《Swift 权威指南》——第6章,第6.5节默认参数值

6.5 默认参数值 Swift函数支持对参数设置默认参数值2,当调用时不指定该参数值时,就会使用这个默认的参数值.默认参数值需要在实现函数时指定,直接在参数类型后面用等号赋值即可.下面是两个典型的使用默认参数值的函数的代码. // 默认参数 func process3(name p1: String = "Mike", age p2:Int = 30) -> String { return "name:" + p1 + " age:" +

《Swift 权威指南》——第6章,第6.3节扩展参数

6.3 扩展参数 我们发现,Swift语言中的很多函数/方法在调用时不只是传入一个参数值,在前面还要跟一个有意义的英文名,该英文名和参数值之间用冒号(:)分隔.例如,Dictionary有一个updateValue方法,该方法的第二个参数需要给一个forKey,然后才能传入参数值,调用形式如下. dict.updateValue("飞机", forKey:21) 实际上,这个forKey就是扩展参数名,该参数也可以成为命名参数.也就是说,在定义函数时指定的参数名是函数内部使用的,可以成

《Swift 权威指南》——第6章,第6.10节嵌套函数

6.10 嵌套函数 Swift函数还支持在函数内部嵌套定义函数,示例代码如下. func myFun5(flag:Bool, m:Int, n:Int) -> Int { // method1为内嵌函数 func method1() ->Int{return m+n} // method2为内嵌函数 func method2() ->Int{return m - n} return flag ? method1() : method2() } println(myFun5(true, 1