我们知道在Swift2中,默认情况下方法的参数是let值,也就是不可改变的.
不过我们可以在参数前添加var关键字改变其不变性:
func foo(var i:Int){ i += 1 print(i)}
- 1
- 2
- 3
- 4
不过遗憾的是在Swift2.x+中,已经明确表明方法参数的修饰关键字var将会在Swift3中被移除,所以为了产出这可恶的警告,你必须使用inout关键字,并且在调用方法传递实参时也要加上地址符:
fun foo(inout i:Int){ i += 1 print(i)}var i = 10foo(&i)print(i)
- 1
- 2
- 3
- 4
- 5
- 6
- 7
- 8
that’s all!!!
不过在Xcode8.0beta中Swift3.0的预演版中,情况又有所变化,运行上述代码,编译器会提示你inout关键字放错地方了,你必须将inout放到冒号后面去:
func test( i:inout Int){ i += 1 print(i)}var x = 10test(&x)print(x)
- 1
- 2
- 3
- 4
- 5
- 6
- 7
- 8
你可以结合我之前写的一篇Swift中如何转换不同类型的Mutable指针来看,相信你一定有所收获 ;]
再分享一下我老师大神的人工智能教程吧。零基础!通俗易懂!风趣幽默!还带黄段子!希望你也加入到我们人工智能的队伍中来!https://blog.csdn.net/jiangjunshow