《Swift 权威指南》——第6章,第6.1节函数的定义和调用
本节书摘来自异步社区《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

低调大师中文资讯倾力打造互联网数据资讯、行业资源、电子商务、移动互联网、网络营销平台。
持续更新报道IT业界、互联网、市场资讯、驱动更新,是最及时权威的产业资讯及硬件资讯报道平台。
转载内容版权归作者及来源网站所有,本站原创内容转载请注明来源。
- 上一篇
《iOS 6核心开发手册(第4版)》——2.1节UIControl类
本节书摘来自异步社区《iOS 6核心开发手册(第4版)》一书中的第2章,第2.1节UIControl类,作者 【美】Erica Sadun,更多章节内容可以访问云栖社区“异步社区”公众号查看 2.1 UIControl类iOS 6核心开发手册(第4版)在iOS中,控件(control)指为用户界面设计的预建对象库的成员。控件包括按钮和文本框、滑块和选项开关,以及其他Apple提供的对象。控件的作用是把用户交互转换为回调。用户触摸和操纵控件,并以此与应用程序通信。 UIControl类位于控件类树的根部。控件是UIView的子类,它们都继承它的所有用于显示和布局的属性。子类添加了一种响应机制,用于增强视图的交互性。 当用户与控件的界面交互时,所有的控件都会实现一些方式来发出消息。控件使用目标—动作模式发送消息。在定义新控件时,将告诉它谁接收消息(目标(target)),要发送什么消息(动作(action)),以及何时发送那些消息(触发条件,比如用户在其界限内完成触摸)。 2.1.1 目标—动作目标—动作设计模式提供了一种响应用户交互的低级方式。对于UIControl类的几乎所有的子类,都...
- 下一篇
《精通移动App测试实战:技术、工具和案例》一1.3 Android权限系统
本节书摘来自异步社区《精通移动App测试实战:技术、工具和案例》一书中的第1章,第1.3节,作者 于涌 , 王磊 , 曹向志,更多章节内容可以访问云栖社区“异步社区”公众号查看 1.3 Android权限系统 Android操作系统其实是一个多用户的Linux操作系统,每个Android应用都使用不同的用户,运行在自己的安全沙盘里。系统为应用的所有文件设置权限,这样一来只有同一个用户的应用可以访问它们。每个应用都有自己单独的虚拟机,这样应用的代码在运行时是隔离的,即一个应用的代码不能访问或意外修改其他应用的内部数据。 每个应用都运行在单独的Linux进程中,当应用被执行时,Android都会为其启动一个Java虚拟机,因此不同的应用运行在相互隔离的环境中。Android系统采用最小权限原则确保系统的安全性。也就是说,每个应用默认只能访问满足其工作所需的功能,而不能访问其无权使用的功能。那么我们要实现移动平台的自动化测试时,比如应用Robotium,就涉及到它和被测试应用的交互,如果是上面的机制是不是意味着我们没有办法实施自动化测试呢?当然能够解决该类问题,不同的应用可以运行在相同的进程...
相关文章
文章评论
共有0条评论来说两句吧...
文章二维码
点击排行
推荐阅读
最新文章
- Docker快速安装Oracle11G,搭建oracle11g学习环境
- CentOS8,CentOS7,CentOS6编译安装Redis5.0.7
- CentOS7安装Docker,走上虚拟化容器引擎之路
- SpringBoot2整合MyBatis,连接MySql数据库做增删改查操作
- Red5直播服务器,属于Java语言的直播服务器
- SpringBoot2整合Thymeleaf,官方推荐html解决方案
- CentOS7编译安装Gcc9.2.0,解决mysql等软件编译问题
- CentOS7编译安装Cmake3.16.3,解决mysql等软件编译问题
- SpringBoot2编写第一个Controller,响应你的http请求并返回结果
- 2048小游戏-低调大师作品