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