函数

  1. 当没有定义返回值时候,其实也是反回了一个空元组return ()
  2. 数组通过中括号中的下标访问
  3. 字典通过中括号中的key访问
  4. 元组通过点后边跟下标或者key访问
  5. 默认值参数
    1. 默认值参数要放到后边,把没有默认值的参数放到前边。
    2. 默认值参数函数在调用时候可以不赋值,这时候会用默认值。也可以赋值,用我们赋的值。
func hello(person: String, age: Int = 18){
    print("hello \(person) And age: \(age)")
}

hello(person: "小明")
hello(person: "小王",age: 24)
  1. 不定参数
    如果函数中有了一个不定参数了,那么后变的参数一定要明确(不能省略标签,不能有不定形式)
//不定参数举例
func variadic(_ numbers: Int...) -> Double{
    var total = 0.0
    for number in numbers{
        total += Double(number)
    }
    return total/Double(numbers.count)
}
print(variadic(1,2,3,4,5,6,7,8,9))

// 一旦有一个不定参数了,那么后边的参数一定要明确(要有标签,参数不能有不定参数类型了)
//有一个不定参数了,后边参数又是不定的 就报错
func go(_ a: Int...,  b: Int...){
    
}

//有一个不定参数了,后边参数省略了标签 就报错
func test(_ a: Int..., _ b:Int){
    
}
  1. 输入输出参数
    输入输出参数允许传入参数地址,在函数内部改变函数外部变量的值
    输入输出参数是函数对函数体外产生影响的另一种方式。
func change(changeA: inout Int, changeB: inout Int){
    let temp = changeA;
    changeA = changeB;
    changeB = temp
}
var a = 4
var b = 5
change(changeA: &a, changeB: &b)
print("a = \(a), b = \(b)")
  1. 函数的类型
    函数的类型指的是 函数的参数类型 + 返回值类型

  2. 函数类型作为变量,参数,返回值

var a = 3
var b = 10
func change(changeA: inout Int, changeB: inout Int){
    let temp = changeA;
    changeA = changeB;
    changeB = temp
}

//1. 函数类型 作为变量
var aFunc: (inout Int, inout Int) -> () = change;

aFunc(&a, &b)
print("a = \(a), b = \(b)")

//2. 函数类型 作为参数
//2.1 传入一个函数
func bFunc(funcLab: (inout Int, inout Int) -> (), _ a: inout Int, _ b: inout Int){
    return funcLab(&a, &b)
}

bFunc(funcLab: aFunc, &a, &b)
print("a = \(a), b = \(b)")

//2.2 传入一个代码块作为函数类型参数
bFunc(funcLab: { (a, b) in
    let temp = a
    a = b
    b = temp
}, &a, &b)
print("a = \(a), b = \(b)")

//2.2 作为回调用
func cFunc(a: Int, b: Int, sum: (Int) ->()){
    let temp = a + b
    sum(temp)
}

cFunc(a: a, b: b) { (sum) in
    print(sum)
}

//3. 函数类型 作为返回值类型
func addOne(a: Int) -> Int{
    return a + 1
}

func subOne(a: Int) -> Int{
    return a - 1
}

func selectOneFunc(value: Bool) -> (Int) -> Int{
    if value == true {
        return subOne(a:)
    }else{
        return addOne(a:)
    }
}

var temp = 10
while temp > 0 {
   let aFunc = selectOneFunc(value: temp > 0)
   temp = aFunc(temp)
    print("temp = \(temp)")
}
  1. 嵌套函数
    1. 我们在类里写的都是全局函数
    2. 当我们在一个函数内部在写一个函数时候,那么这就是嵌套函数
    3. 嵌套函数的内部函数只能被这个外围函数调用
  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值