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

第6章 丰富多彩的功能——函数
Swift 权威指南
Swift语言为函数提供了丰富多彩的功能。但从功能上来说,Swift函数和其他语言的函数相比是非常强大的,在后面章节要介绍的方法与函数基本上一致。不过在本章先不讨论方法的细节,只介绍函数的各种功能和使用方法。

本章要点

函数的定义和调用
返回多种的函数
扩展参数
扩展参数和内部参数使用同一个名字
默认参数值
可变参数
常量和变量参数
输入/输出参数
函数类型
嵌套函数

6.1 函数的定义和调用
源代码文件:src/ch06/function/function/main.swift

Swift并不是纯的面向对象语言,所以和C++一样,支持函数。函数和方法的区别就是函数是全局的,而方法的作用域仅限于方法内。要想引用方法,必须先要引用包含该方法的对象。也可以将方法看成是定义在类中的函数。因此,函数和方法的定义规则基础一致。在后面讲到类时再详细讨论方法的细节。本节先来讨论如何定义一个函数。

不管是什么语言,函数都必须由下面几部分组成。

函数名。
返回值类型。
函数的参数列表,在列表中包含参数名(形参)和参数类型。
函数体。
定义Swift语言的函数也逃不出这几项。下面看一下Swift函数的语法形式。

func functionName(paramName1:paramType1, paramName2,paramType2,...) -> returnType
{
    function body
}

很明显,Swift函数和C语言的函数在定义上差异很大。首先,Swift函数必须以func开头,然后跟着函数名,接下来是函数参数列表,最后是返回值类型。其中函数参数列表和返回值类型之间需要用“→”分隔。最后需要用一对花括号({...})将函数体括起来,这里面函数参数类型列表和返回值类型都是可选的。如果不指定函数参数列表,则函数没有参数,但必须在函数名后面指定一对圆括号。如果不指定返回值类型,则函数没有返回值,相当于C语言函数前面指定了void。

下面是一个标准的Swift函数的代码,该函数接收一个String类型的参数,返回一个String类型的值,最后调用了sayHello函数,并输出了函数的返回值。

func sayHello(personName: String) -> String
{
    let greeting = "hello " + personName + "!"
    return greeting
}
//  调用sayHello函数
println(sayHello("李宁"))

执行这段代码后,会输出如下内容。

hello 李宁!

下面是一些其他形式的函数(多个参数、没有参数、没有返回值)。

//  多个参数的函数
func add(a:Int, b:Int) -> Int
{
    return a + b
}
//  调用add函数
println(add(20, 30))
//  没有参数,但又返回值的函数
func process() -> Float
{
    return 3*20
}
//  调用process函数
println(process())
//  既没有参数,也没有返回值的函数
func method()
{
    println("hello world")
}
//  调用method方法
method()

执行这段代码后,会输出如下内容。

50
60.0
hello world
时间: 2024-08-01 18:54:29

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

《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权威指南》目录及其源代码下载

源代码 目录 第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

《Netty 权威指南》样章

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

《Hack与HHVM权威指南》——1.6.3 推理局限在函数内

本节书摘来自华章出版社<Hack与HHVM权威指南>一书中的第1章,第1.6.3节,作者 Owen Yamauchi,更多章节内容可以访问"华章计算机"公众号查看. 1.6.3 推理局限在函数内 关于Hack的类型推理的一个最基本限制就是:当分析一个函数的时候,它绝对不会看另外一个函数或方法的代码体.举例来说,假设以下是你的全部代码: function f($str) { return 'Here is a string: ' . $str; } function main

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

6.2 返回多值的函数 不管是数学上的定义,还是各种语言中的实现,函数都只能返回一个值,如果非要返回多个值,就返回一个对象,然后将要返回的值以字段.属性或方法形式体现,但这也是返回一个值.不过在Swift函数中,却彻底颠覆了我们对函数的印象.Swift函数是真真正正地可以返回多个值. 可能有的读者会想到,在前面学习数据类型时,有一个元组类型,这个类型可以同时表示多个值,难道函数返回的是这个类型的值?没错,Swift函数就是通过元组类型实现返回多个值的功能的. 其实函数返回元组类型和返回其他类型在

《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.9节函数类型

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

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

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