本节书摘来自异步社区《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