写在前面,需要返回哪个参数,就用return 加上那个参数
func是一个代码块,不要把它需要的变量写在它的外面。想象它就是一个暗箱,无论里面有多么复杂的操作,只要我们写好了,就不要去管他。我们关注的应该是他的功能。让它自动地进行“暗箱操作”。
所以,不要把它需要的参数不小心卸载外面。
当它能够成功运行以后,我们就要以整体思维去看待它了。
我们的关注点在于它的功能:比如,它是做什么的?(计算总数,比较大小,排序等等);它需要输入的参数是什么?它会输出什么结果?
我们只关注这三点就行了。
1、功能
2、需要输入的数据
3、它吐出的数据
这就是一个函数的作用。
我觉得,它本质上就是为了减少人们的重复劳动吧!同样的事情,问题丢给他,它就能得到答案。
或者说,把上面三点改为:
1、方法
2、问题
3、答案
这就是函数的本质。
命名:
func min(_ a: Int, _ b: Int) -> Int {
return a > b ? a: b
}
a,b是参数名称,前面的通配符是引数名称。引数名称可以省略,引述名称省略后,参数名称也充当引述名称,或者说引数名称跟预设参数名称是一样的,如果什么都不写,那么参数名称就是引数名称。
这里再细说一下什么是引数,什么是参数。
引数是函数实际处理的具体数值,参数是函数定义时占位的变量。
这个函数的功能是,给min函数输入两个整数,分别是a, b,min函数对这两个整数进行操作(比较大小),输出的结果是a,b两个数种较小的数。
如何呼叫:
如果不写参数前面的通配符,则格式为:
min(a: 3, b:5)
如果写了字母前面的通配符,则格式为:
min(3, 5)
这里的return可以不写,因为只有一行,如果有多种可能的结果,就要写多个return。
虽然一个函数中可能存在多个return,但是只要有一个return返回值,这个函数就结束了。
其实这个return就是返回给大括号前面的那个Int,也就是func的结果。
大括号里面的,才是这个func的具体功能。
函数可以没有返回值,可以写为() -> Void
函数也可以没有参数。比如,函数的主体就是打印分割线print("------------")
函数中也可以放入多个引数
下面是例子:
func min(of: numbers: Int...) -> Int {
var min = numbers.first!
for number in numbers {
min = number < min ? number : min
}
return min
}
min(of: 0)
min(of: 3, 9, -22, 888)
为什么呢?因为函数中的...可以把放入其中的引数变成一个数组Array,所以放入一个也行,放入多个也行。