前言
在swft中有几种定义函数方法的方式,需要留意一下几个细节,学会之后在以后编码过程中写起来会更加得心应手和规范,接下来我们用最简单的几个例子来简述一下函数的定义.
一、常见的定义函数方式:
1, num1和num2表示的形参的内部函数名
func sum(num1: Int, num2: Int) -> Int {
return num1+num2
}
let su = sum(num1:10, num2: 20)
2,在开发过程中往往会给形参设置一个名词, 这样不能大大提高函数的可读性, a和b就是形参的外部函数名
func sum( a num1: Int, b num2: Int) -> Int {
return num1+num2
}
let su = sum(a: 10, b: 20)
3,这种方式也是我在开发中常用的一种方式,直接在形参前面使用下划线“_”, 这样就会把函数名直接隐藏掉,有点是可使代码看起来更加简洁,方便
func sum( _ num1: Int, _ num2: Int) -> Int {
return num1+num2
}
let su = sum(10, 20)
注意:
函数中定义形参默认是let类型, 所以不能直接去修改形参的值,假如需要修改参数的值,需要使用到inout关键字。
如:
错误写法: number默认是let类型,不能直接修改参数的值,这样写会报错
func sum(number: Int) {
number += 1
}
var num3: Int = 5
sum(num: &num3)
报错:
error: block.playground:11:9: error: left side of mutating operator isn't mutable: 'num' is a 'let' constant
num += 3
~~~ ^
正确写法:使用关键字 inout 指向的是内存地址, 相当于C语言的&地址符号
func sum(number:inout Int) {
number += 1
}
var num3: Int = 5
sum(num: &num3) // 结果是6
二、函数的参数不定:
- 不定参数函数表示函数的形式参数的数量是不定的, 但是每个参数的类型必须是一样的, 不定形参类似是一个数组, 直接用for循环就能获取所有的值
// ... 表示数量不定, 在循环中表示闭区间
func sum(_ numbers: Int ...) -> Int {
var num: Int = 0
for n in numbers {
num += n
}
return num
}
// 调用
let sumN: Int = sum(1, 2, 3, 4, 5) // 结果15
三、为参数设置默认值
- 在开发中为了防止获取到的数据是空而发生闪退的情况,我们常常都会设置一个默认值, 在swfit中函数的参数也能设置默认值,如:
func sayHi(_ maleName: String = "大白", _ femaleName: String = "小C") -> String {
return "\(maleName) say hello to \(femaleName)"
}
sayHi() // 结果: 大白 say hello to 小C
sayHi("李白") // 结果: 李白 say hello to 小C
sayHi("W", "Z")// 结果: W say hello to Z
四、函数嵌套
- 函数中定义一个或者多个函数
// 定义枚举
enum countType: Int {
case diffent = 0
case mul
}
// 注意: 这里的返回值是一个函数类型的返回值
func sum(count: countType) -> ((Int, Int) -> Int) {
// 嵌套的函数1
func diff(num1: Int, num2: Int) -> Int {
return num2 + num1
}
// 嵌套函数2
func mul(num3: Int, num4: Int) -> Int {
return num3 * num4
}
// 定义一个函数类型的变量: (Int, Int) -> Int 类型
var myType:(Int, Int) -> Int
switch count {
case .diffent:
myType = diff
case .mul:
myType = mul
}
return myType
}
let vim = sum(count: .diffent)
总结
今天看到一篇文章,心里很是触动,总之吧,不管是哪个行业,都是需要不断地去学习,不断去提高自己的能力。淘汰的一定会是那些安于现状,不愿从舒适圈中走出来的人。所有的东西都要注意细节,着重基础。