当你定义一个函数时,你可以定义一个或多个有名字和类型的值,作为函数的输入(称为参数,parameters),也可以定义某种类型的值作为函数执行结束的输出(称为返回类型)。
每个函数有个函数名,用来描述函数执行的任务。要使用一个函数时,你用函数名“调用”,并传给它匹配的输入值(称作实参,arguments)。一个函数的实参必须与函数参数表里参数的顺序一致。
在下面例子中的函数叫做"greetingForPerson"
,之所以叫这个名字是因为这个函数用一个人的名字当做输入,并返回给这个人的问候语。为了完成这个任务,你定义一个输入参数-一个叫做personName
的String
值,和一个包含给这个人问候语的String
类型的返回值:
func sayHello(personName: String) -> String { let greeting = "Hello," + personName + "!" return greeting }
所有的这些信息汇总起来成为函数的定义,并以func
作为前缀。指定函数返回类型时,用返回箭头->
(一个连字符后跟一个右尖括号)后跟返回类型的名称的方式来表示。
该定义描述了函数做什么,它期望接收什么和执行结束时它返回的结果是什么。这样的定义使的函数可以在别的地方以一种清晰的方式被调用:
println(sayHello("Anna")) // prints "Hello,Anna!" println(sayHello("Brian")) // prints "Hello,Brian!"
调用sayHello
函数时,在圆括号中传给它一个String
类型的实参。因为这个函数返回一个String
类型的值,sayHello
可以被包含在println
的调用中,用来输出这个函数的返回值,正如上面所示。
在sayHello
的函数体中,先定义了一个新的名为greeting
的String
常量,同时赋值了给personName
的一个简单问候消息。然后用return
关键字把这个问候返回出去。一旦return greeting
被调用,该函数结束它的执行并返回greeting
的当前值。
你可以用不同的输入值多次调用sayHello
。上面的例子展示的是用"Anna"
和"Brian"
调用的结果,该函数分别返回了不同的结果。
为了简化这个函数的定义,可以将问候消息的创建和返回写成一句:
func sayHelloAgain(personName: String) -> String { return "Hello again," + personName + "!" } println(sayHelloAgain("Anna")) // prints "Hello again,Anna!"