Welcome to Swift (苹果官方Swift文档初译与注解三十)---225~230页(第五章-- 函数)

Functions (函数)

  函数是一个执行特定任务的代码段.通过名称来标识和调用它们.

  在Swift中,每个函数都有类型,包括函数的参数类型和返回值类型.这些类型与Swift中的其他类型使用起来一样,这使得函数可以作为参数传递给另一个函数,以及可以从一个函数中返  回函数,一个函数也可以写在另一个函数内部,这样可以更有效的封装和嵌套.

Defining and Calling Functions (定义和调用函数)

  当你在定义函数的时候,你可以选择性的命名一个或者多个参数类型值,以及函数执行后的返回值类型.

  每个函数都有一个名字,它是用了描述函数的功能.如果想调用这个函数,可以直接使用函数的名字并传递相应的参数(参数的类型要与函数的参数列表匹配).

  下面是一个greetingForPerson函数的简单例子,它接收一个人名作为参数,返回一个问候语(一个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函数,并使用不同的参数值.为了简化函数体,可以使用一行代码整合:

    func sayHelloAgain(personName: String) -> String {

        return "Hello again, " + personName + "!"

    }

    println(sayHelloAgain("Anna"))

    // prints "Hello again, Anna!”

Function Parameters and Return Values (函数的参数和返回值)

  在Swift中,函数的参数和返回值是非常富有弹性的.你可以定义任意类型的返回值,也可以使用一个或者多个参数(或者匿名的参数).

Multiple Input Parameters (多个参数)

  函数可以有多个参数,它们写在函数的括号内,并使用逗号分隔.

  代码例子:

    func halfOpenRangeLength(start: Int, end: Int) -> Int {

      return end - start

    }

    println(halfOpenRangeLength(1, 10))

    // prints "9”

Functions Without Parameters (无参函数)

  函数没有要求必须使用参数.下面的函数例子中使用了没有参数的函数,当它被调用的时候,它总是返回相同的String信息:

    func sayHelloWorld() -> String {

     return "hello, world"

    }

    println(sayHelloWorld())

    // prints "hello, world”

  无参的函数定义的时候仍然需要在函数名后面使用括号().

Functions Without Return Values (无返回值函数)

  函数也可以不定义返回值,这么的代码样例定义了一个函数waveGoodbye,它只是打印输出String值,而不是返回这个值:

    func sayGoodbye(personName: String) {

       println("Goodbye, \(personName)!")

    }

    sayGoodbye("Dave")

    // prints "Goodbye, Dave!"

  由于函数不需要返回值,因此定义函数的时候没有使用返回剪头(->)

  注意点:

  严格意义上说,sayGoodbye函数仍然有返回值,尽管没有定义它的返回值.当函数没有定义返回值的时候,这个函数返回一个Void类型的值.它是一个空的元组,元素个数为零,可以写做  ().

  在调用函数的时候,也可以忽略函数的返回值:

    func printAndCount(stringToPrint: String) -> Int {

       println(stringToPrint)

       return countElements(stringToPrint)

    }

    func printWithoutCounting(stringToPrint: String) {

       printAndCount(stringToPrint)

    }

    printAndCount("hello, world")

    // prints "hello, world" and returns a value of 12

    printWithoutCounting("hello, world")

  // prints "hello, world" but does not return a value”

  注意点:

  函数的返回值可以被忽略,但是函数必须有一个返回值.定义了函数的返回值,但如果在函数最后没有返回值,将会导致一个编译错误.

Welcome to Swift (苹果官方Swift文档初译与注解三十)---225~230页(第五章-- 函数)

时间: 2024-10-27 06:14:30

Welcome to Swift (苹果官方Swift文档初译与注解三十)---225~230页(第五章-- 函数)的相关文章

Welcome to Swift (苹果官方Swift文档初译与注解三十三)---235~240页(第五章-- 函数)

Default Parameter Values (参数默认值) 在定义函数的时候,你可以给任何参数定义一个默认的值,如果定义了默认值,在调用这个函数的时候,你可以忽略这个参数. 注意: 设置参数默认值的时候,需要按照函数的参数列表最后的开始,这可以确保在调用函数的时候,即使没默认值的参数也可以按顺序的对应上,也使得函数在调用的时候更加清晰. 下面的代码例子是join函数的新版本,它使用了默认参数: func join(string s1: String, toString s2: String

Welcome to Swift (苹果官方Swift文档初译与注解三十)---219~224页(第四章-- 流程控制 完)

Labeled Statements  (标签语句) 循环或者switch语句可以嵌套其他的循环或者switch,这样在Swift中可以创建复杂的流程控制结构.循环或者switch语句都可以通过break语句来永久的结束,因此,有时候需要显式的 表明在循环或者switch中你需要break的语句.同样的,如果你嵌套多个循环,显式的表明里面的continue语句也是类似的. 为了达成这个目标,可以在循环语句或者switch语句中使用一个语句标签(statement label),利用这个标签和br

Welcome to Swift (苹果官方Swift文档初译与注解三十七)---261~265页(第六章-- 闭包)

Inferring Type From Context 上下文类型判断 因为排序的闭包是作为一个参数传递给函数,因此Swift可以判定这个参数的类型和根据sort函数第二个参数判断返回值的类型.这个参数的类型是(String, String) -> Bool,这意味着 String,String以及Bool类型都不需要在闭包定义的时候声明.因为所有的类型都可以由系统判定.因此,返回箭头以及参数名字的括号都可以省略: reversed = sort(names, { s1, s2 in retur

Welcome to Swift (苹果官方Swift文档初译与注解三十五)---248~253页(第五章-- 函数 完)

Function Types as Return Types (函数类型作为返回值类型) 一个函数的类型可以作为另一个函数的返回值类型.可以在一个函数的返回值箭头后面写上一个完整的函数类型. 例如: 下面的例子定义了两个简单的函数,分别为stepForward 和 stepBackward.其中stepForward函数返回值比它的输入值多1,stepBackward函数返回值比它输入值少1.这两个函数的 类型都是(Int) -> Int: func stepForward(input: Int

Welcome to Swift (苹果官方Swift文档初译与注解二十七)---189~198页(第四章-- 流程控制)

Switch 一个switch语句里包含一个值,并且用这个值与其他几个可能的匹配模式进行比较,然后根据成功匹配上的模式,执行相应的代码块.switch语句提供了比if语句更多的选项来相应多种潜 在的情况. 最简单的一个例子: switch some value to consider { case value 1:   respond to value 1 case value 2, value 3:   respond to value 2 or 3 default:   otherwise,

Welcome to Swift (苹果官方Swift文档初译与注解二十)---133~139页(第二章..本节完)

Unicode (Unicode码) Unicode是一种国际标准的文本编码.它的标准表中几乎包含所有语言的任意字符,并且可以通过扩展文件或者网页读写这些字符. 在Swift中,String(字符串)类型和Character(字符)类型完全兼容Unicode,而且它们也支持非Unicode码. Unicode Terminology (Unicode 术语) 每个Unicode码都可以用一个或者多个Unicode标量表示.对于一个字符来说,一个Unicode标量都是一个唯一的21位的值(或名称)

Welcome to Swift (苹果官方Swift文档初译与注解三十四)---241~247页(第五章-- 函数)

In-Out Parameters (全局参数) 像前面描述的参数变量,只能在函数体内进行修改,如果你需要函数修改的它的参数值,并且希望这些改变在函数调用结束后仍然有效,可以定义使用全局参数. 定义全局参数使用关键字inout,全局参数的值在函数调用的时候进行传递,在函数体内进行修改,最后函数回传新值来替换之前的值. 全局参数在函数中,只能使用变量来当作参数,不能使用常量或者文本值作为参数.因为常量或者文本值不可以被修改.为了表明参数变量可以被修改,要在变量名的前面直接添加一个& 符号. 注意

Welcome to Swift (苹果官方Swift文档初译与注解三十八)---266~271页(第六章-- 闭包)

Trailing Closures(尾闭包) 如果你需要将一个闭包表达式作为参数传递给一个函数,而且参数的位置刚刚好是函数的最后一个,你这个闭包表达式又很长,那么使用尾闭包就显得非常有效(有用). 尾闭包是一个写在跟随函数()外面(或后面)的闭包表达式: func someFunctionThatTakesAClosure(closure: () -> ()) { // function body goes here }  // here's how you call this function

Welcome to Swift (苹果官方Swift文档初译与注解二十一)---140~147页(第三章--集合类型)

第三章 Collection Types (集合类型) 在Swift中,提供了两种集合类型用来存储一组值:数组和字典.数组有序的存储相同类型的值;字典存储无序的相同类型的值.字典可以通过唯一的标识(就是所说的键)来查询和访问. 在Swift中,数组和字典总是要清晰的标明他们存储数据的类型.这就意味着不可以将错误的类型插入到数组或字典中.同时也意味着你是明确了解你要遍历的数组或字典里面数据的类 型.在Swift中,集合要显式的声明类型来保证在开发中都会明确的知道它能处理的数据类型. 注意点: 在S