一般参数仅仅是在函数内可以改变的,当这个函数执行完后变量就会被销毁,不会有机会改变函数以外的变量,那么我们就会产生一个疑问,我们可不可以通过一个函数改变函数外面变量的值呢?答案是肯定的,这时我们就需要用到inout关键字了

  声明函数时,在参数前面用inout修饰,在函数内部实现改变外部参数,注意,这里只能传入变量,不能传入常量和字面量,因为这些是不能变的一旦定义,当我们传入的时候,在变量名字前面用&符号修饰表示,传递给inout参数,表明这个变量在参数内部是可以被改变的

注意:inout修饰的参数是不能有默认值的,有范围的参数集合也不能被修饰,另外,一个参数一旦被inout修饰,就不能再被var和let修饰了

  1. override func viewDidLoad() {  
  2.         super.viewDidLoad()  
  3.         var someInt = 7  
  4.         var anotherInt = 107  
  5.         swapTwoInts(&someInt, b: &anotherInt)  
  6.         print("someInt is \(someInt),anotherInt is \(anotherInt)")  
  7.     }  
  8.   
  9.     func swapTwoInts(inout a:Int , inout b:Int) {  
  10.         let temp = a  
  11.         a = b  
  12.         b = temp  
  13.     } 
posted on 2018-02-08 19:58  代码少年_夕阳  阅读(162)  评论(0编辑  收藏  举报