swift-函数-2

22 篇文章 0 订阅
import Foundation

//实现一个函数 交换函数外面的两个变量的值
/*
func swap(a:Int,b:Int) {
    //a = 1
   // a b是常量
}*/
//变量参数
func mySwap(var a:Int, var b:Int) {
    //这样交换的是mySwap内部 a 和b的值 交换不了函数外面的x y
    let tmp = a
    a = b
    b = tmp
}
var x = 3
var y = 5

print("x = \(x) y = \(y)")
mySwap(x, b: y)
print("swap_x = \(x) y = \(y)")

//C语言 函数外面的变量需要传变量地址
//但是swift 是没有指针语法的 那么需要通过inout 参数来解决
//inout 内部外部参数  修饰的参数 实际操作是函数外面传进来的变量
//和c++ 引用语法很像

func mySwap2(inout a:Int, inout b:Int) {
    //a 实际上操作的是 函数外部传进来得变量
    let tmp = a
    a = b
    b = tmp
}

print("x = \(x) y = \(y)")
//把 x 和y 传入 函数mySwap2
mySwap2(&x, b: &y)//内部外部参数 类型 传参时 需要加&
print("swap_x = \(x) y = \(y)")


var num = 100

//实现一个函数 把num 置为0

//swift中 函数内部修改函数外面的变量需要 通过inout 修饰参数

func changeZeroNum(inout a:Int) {
    a = 0
}
changeZeroNum(&num)

print(num)


import Foundation

//变参函数
//
//1.可以传一个数组 就相当于变参
//func sumOfNum(a:Int,arr:Array<Int>)
func sumOfNum(a:Int,arr:[Int])->Int {
    print("a:\(a)")
    var sum = 0
    for i in arr {
        sum += i
    }
    return sum
}
var s = sumOfNum(100, arr: [1,2,3,4,5,6])
print("s = \(s)")
//2.swift 自带的变参 
//变参参数只能作为最后一个参数

func sumOfNum(arr:Int ...) ->Int {
    //Int ...就是一个变参类型  在函数内部 实际上arr 就是一个数组类型
    //可以把arr 按照数组操作
    var sum = 0
    for i in arr {
        sum += i
    }
    return sum
}
//调用变参函数的写法
var s2 = sumOfNum(1,2,3,4,5,6) //直接写多个参数

print("s2 = \(s2)")

//swift 中的函数类型 通过函数类型 调用 函数

//C语言中 调用函数 可以通过函数指针的形式 
//只需要知道函数的地址 就可以调用函数


//加法函数
func add(a:Int,b:Int)->Int {
    return a+b
}

//减法函数
func sub(a:Int,b:Int)->Int {
    return a-b
}

//调用 函数 只需要知道函数的类型 定义一个函数类型的变量或者常量 就可以调用

//定义一个函数类型的变量
//把一个函数名给 相应函数类型的变量
//这个和C语言中的函数指针/函数地址类似

var calc:(Int,Int)->Int = add

//通过calc 调用add
print(calc(1,2)) //1+2
//调用sub
calc = sub
print(calc(1,2)) //1-2


  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值