大佬教程收集整理的这篇文章主要介绍了以快速奇怪的行为为变量赋值,大佬教程大佬觉得挺不错的,现在分享给大家,也给大家做个参考。
func swapper(var arr: [Int]) { let first: Int = arr[0] let last: Int = arr[arr.count - 1] arr[0] = last arr[arr.count - 1] = first arr } var MyFunctionPointer : ([Int]) -> () = swapper
它运行良好但是当我尝试将inout添加到方法的参数的签名时,我无法将其分配给变量外部,如下所示.
func swapper(inout arr: [Int]){ let first: Int = arr[0] let last: Int = arr[arr.count - 1] arr[0] = last arr[arr.count - 1] = first arr } var MyFunctionPointer: ([Int]) -> () = swapper // This Failed [int] is not subtype of inout [Int] var MyFunctionPointer: (inout[Int]) -> () = swapper // I am not getTing a compilation error,but the playground keeps showing an error message and everything stopped working
我正在使用Xcode 6.1 Playground.
它可以简化(我意识到这可能不是你真正的代码,但它提供了一个更好的方法的好例子):
func swapper(inout arr: [Int]){ (arr[0],arr[arr.count - 1]) = (arr[arr.count - 1],arr[0]) } //let MyFunctionPointer : (inout [Int])->Void = swapper let MyFunctionPointer = swapper // There's no real reason for a type here var x = [1,2,3] MyFunctionPointer(&X) println(X)
请注意,将arr放在函数末尾并不是一个好习惯. Swift不返回计算的最后一个值,因此该行根本不做任何事情(但会产生一些混淆).
编辑:实际上,它甚至可以比这更简单(我没有意识到这会工作,直到我尝试它):
func swapper(inout arr: [Int]){ swap(&arr[0],&arr[arr.count-1]) }
以上是大佬教程为你收集整理的以快速奇怪的行为为变量赋值全部内容,希望文章能够帮你解决以快速奇怪的行为为变量赋值所遇到的程序开发问题。
如果觉得大佬教程网站内容还不错,欢迎将大佬教程推荐给程序员好友。
本图文内容来源于网友网络收集整理提供,作为学习参考使用,版权属于原作者。
如您有任何意见或建议可联系处理。小编QQ:384754419,请注明来意。