Swift学习笔记(7):函数
目录:
- 函数参数与返回值
- 参数标签和参数名称
- 可变参数
- 传入传出参数
- 函数类型
- 嵌套函数
函数是一段完成特定任务的独立代码片段,使用func标示函数名,使用->标示返回类型。
・可以为函数参数设置默认值,以简化函数调用
・函数参数具有传入传出特性
・函数类型由函数的参数值类型和返回值类型唯一标定,与变量一样可以作为函数参数或返回值
・函数可以嵌套封装定义在其他函数体中,且可以作为返回值返回函数
func greet(person: String) -> String {
let greeting = "Hello, " + person + "!"
return greeting
}
函数参数与返回值
// 无返回值函数
func greet(person: String) {
print("Hello, \(person)!")
} // 无参函数
func sayHelloWorld() -> String {
return "hello, world"
} // 多参有返回值函数
func minMax(array: [Int]) -> (min: Int, max: Int) {
// logic codes
return (currentMin, currentMax)
} // 返回可选参数
func minMax(array: [Int]) -> (min: Int, max: Int)? {
// return nil 条件不满足时返回nil
return (currentMin, currentMax)
}
参数标签和参数名称
每个函数参数都有一个标签和名称。参数标签在函数调用时外部使用,写在实参前。参数名称在函数体内使用,默认情况下函数使用名称作为标签。
// 具有函数参数标签和名称
func someFunction(argumentLabel parameterName: Int) {
// 在函数体内,parameterName 代表参数值
} // 没有函数参数标签,内外部都是用参数名称
func someFunction(parameterName: Int) {
// 在函数体内,parameterName 代表参数值
} // 省略函数参数标签,外部调用函数时可以在实参前省略参数标签
func someFunction(_ parameterName: Int) {
// 在函数体内,parameterName 代表参数值
} // 具有默认值的函数参数
func someFunction(parameterWithoutDefault: Int, parameterWithDefault: Int = ) {
// 函数调用时不传参数2,parameterWithDefault值以12传入。
}
someFunction(parameterWithoutDefault: , parameterWithDefault: )
someFunction(parameterWithoutDefault: )
可变参数
可变参数可以接受0个或多个值,且一个函数有且仅有一个可变参数。
func arithmeticMean(_ numbers: Double...) -> Double {
var total: Double =
for number in numbers {
total += number
}
return total / Double(numbers.count)
}
传入传出参数
可以使用inout标示一个函数参数为传入传出参数类型,可变参数(Int...)和常量不能作为输入输出参数。变量作为输入输出实参时需要前加 & 。
var someInt =
var anotherInt =
swapTwoInts(&someInt, &anotherInt)
函数类型
Swift语言中函数类型可以像其他类型一样定义变量和常量。
var mathFunction: (Int, Int) -> Int = addTwoInts
函数类型作为参数和返回值:
func printMathResult(_ mathFunction: (Int, Int) -> Int, _ a: Int, _ b: Int) {
print("Result: \(mathFunction(a, b))")
}
func chooseStepFunction(backward: Bool) -> (Int) -> Int {
return backward ? stepBackward : stepForward
}
嵌套函数
func chooseStepFunction(backward: Bool) -> (Int) -> Int {
func stepForward(input: Int) -> Int { return input + }
func stepBackward(input: Int) -> Int { return input - }
return backward ? stepBackward : stepForward
}
声明:该系列内容均来自网络或电子书籍,只做学习总结!
Swift学习笔记(7):函数的更多相关文章
- swift学习笔记2——函数、闭包
之前学习swift时的个人笔记,根据github:the-swift-programming-language-in-chinese学习.总结,将重要的内容提取,加以理解后整理为学习笔记,方便以后查询 ...
- Swift学习笔记(8)--函数
1.定义及调用 func sayHelloAgain(personName: String) -> String { return "Hello again, " + per ...
- swift学习笔记之-函数
//函数 import UIKit /*获得系统时间 var date = NSDate() var timeFormatter = NSDateFormatter() timeFormatter.d ...
- 【swift学习笔记】二.页面转跳数据回传
上一篇我们介绍了页面转跳:[swift学习笔记]一.页面转跳的条件判断和传值 这一篇说一下如何把数据回传回父页面,如下图所示,这个例子很简单,只是把传过去的数据加上了"回传"两个字 ...
- Matlab学习笔记 figure函数
Matlab学习笔记 figure函数 matlab中的 figure 命令,能够创建一个用来显示图形输出的一个窗口对象.每一个这样的窗口都有一些属性,例如窗口的尺寸.位置,等等.下面一一介绍它们. ...
- matlab学习笔记 bsxfun函数
matlab学习笔记 bsxfun函数 最近总是遇到 bsxfun这个函数,前几次因为无关紧要只是大概看了一下函数体去对比结果,今天再一次遇见了这个函数,想想还是有必要掌握的,遂查了些资料总结如下. ...
- Swift学习笔记(一)搭配环境以及代码运行成功
原文:Swift学习笔记(一)搭配环境以及代码运行成功 1.Swift是啥? 百度去!度娘告诉你它是苹果最新推出的编程语言,比c,c++,objc要高效简单.能够开发ios,mac相关的app哦!是苹 ...
- Swift学习笔记(14)--方法
1.分类 方法分为实例方法和类型方法 实例方法(Instance Methods):与java中的类似,略 类型方法(Type Methods):与java.oc中的类方法类似.声明类的类型方法,在方 ...
- matlab学习笔记13_1 函数返回值
一起来学matlab-matlab学习笔记13函数 13_1 函数返回值 觉得有用的话,欢迎一起讨论相互学习~Follow Me 参考文献 https://blog.csdn.net/qq_36556 ...
- swift学习笔记5——其它部分(自动引用计数、错误处理、泛型...)
之前学习swift时的个人笔记,根据github:the-swift-programming-language-in-chinese学习.总结,将重要的内容提取,加以理解后整理为学习笔记,方便以后查询 ...
随机推荐
- ITWorld:2014年全球最杰出的14位编程天才
近日,ITWorld 整理全球最杰出的 14 位程序员,一起来看下让我们膜拜的这些大神都有哪些?(排名不分先后) 1.Jon Skeet 个人名望:程序技术问答网站 Stack Overflow 总排 ...
- tomcat开启https服务
一.创建证书 证书是单点登录认证系统中很重要的一把钥匙,客户端于服务器的交互安全靠的就是证书:本教程由于是演示所以就自己用JDK自带的keytool工具生成证书:如果以后真正在产品环境中使用肯定要去证 ...
- 使用http-server开启一个本地服务器
前言 在写前端页面中,经常会在浏览器运行HTML页面,从本地文件夹中直接打开的一般都是file协议,当代码中存在http或https的链接时,HTML页面就无法正常打开,为了解决这种情况,需要在在本地 ...
- com.sun.jdi.internalException:Unexpected JDWP Error:103////Method threw 'java.lang.IllegalArgumentEx
retrofit2+RxJava2 的一些坑 今天开发新项目,本着积极向上的学习态度,经过多番考虑我决定使用retrofit2 + RxJava2来做为我的网络请求......神说:你的想法非常好 先 ...
- VC工程里,如何编译汇编语言的文件
最近老是有朋友问,VC工程里,如何编译汇编语言的文件,接下来就说一下步骤: 1.将汇编语言文件,加入到工程里: 2.在Solution Explorer窗口中右键单击Visual C++项目,选择Bu ...
- PostgreSQL练习网站
PostgreSQL练习 http://pgexercises.com/index.html
- java 读写分离
源码地址:http://git.oschina.net/xiaochangwei 先回答下 1.为啥要读写分离? 大家都知道最初开始,一个项目对应一个数据库,基本是一对一的,但是由于后来用户及数据还有 ...
- jsonp模仿了得一个百度搜索框
<!DOCTYPE html> <html lang="en"> <head> <meta charset="UTF-8&quo ...
- 3ds Max制作欧式风格的墙壁路灯效果
在这篇文章中,我将解释我创建我的形象元宵节的步骤.我只是在寻找一个很好的参考图像在互联网上的东西,我觉得我想要的模型,这个形象.我发现了一个巨大的灯笼形象,但在白天的图片拍摄.我想改变我的形象和显示的 ...
- ZBrush中如何对模型进行减面操作
Decimation Master是ZBrush 4R8自带的一个插件.中文名叫减面大师.其功能非常强大,也非常的方便,可以帮助我们提高效率,减少电脑资源损耗.作为一名3D美术师是必须掌握的一个技术. ...