//: Playground - noun: a place where people can playimport UIKit// swift中默认情况下, 传入的参数是不可以修改的, 也就是let类型, 也就是常量参数// 如果想修改这个参数的值, 需要在参数前加"var", 也就是变量参数func toBinary(var num:Int) -> String // 将一个数转换为二进制{ var result = "" while num != 0 { result = String(num%2) + result num /= 2 } return result}var number = 69toBinary(number)number // 输入结果还是69, 说明函数中对变量参数的修改, 不会影响外部变量本身// 以下两个函数也证明了, 变量参数不会影响外部变量本身(包括数组和字典)var a = 1func testChangeIntFunction(var a:Int){ a = 0}testChangeIntFunction(a)avar arr = [2, 3]func testChangeIntFunction(var a:[Int]){ a = [3, 4]}testChangeIntFunction(arr)arr/*--------------------------------------------------------------------*/// 那么如何实现在函数内改变外部变量本身呢? 这里就要使用到另外一个关键字"inout"了// 这样可以理解为传入的是参数的指针(也就是内存地址)func changeEachOther(inout a:Int, inout b:Int) { let temp = a a = b b = temp}var x = 0, y = 100print("x = \(x), y = \(y)")changeEachOther(&x, b: &y)print("x = \(x), y = \(y)")// swift自带的交换函数// swap(&<#T##a: T##T#>, &<#T##b: T##T#>)