swift inout参数是变量还是指针?
我觉得在以下代码中使用
swift inout参数有点丢失:
var shouldContinue: Bool = true func doSomeWork1(shouldContinue: inout Bool) { while shouldContinue { // ERROR: the compiler wants: doSomeWork2(shouldContinue: &shouldContinue) doSomeWork2(shouldContinue: shouldContinue) } } func doSomeWork2(shouldContinue: inout Bool) { while shouldContinue { } } 为什么编译器需要doSomeWork2(shouldContinue:& shouldContinue)而不是编译器想要:doSomeWork2(shouldContinue:shouldContinue)?是不是应该继续在doSomeWork1()范围内的指针? 解决方法
作为指针只是inout参数的优化过程的副作用.它们实际上使用copy-in copy-out行为以不同的方式工作.所以内部函数将参数视为常规变量,而不是指针.如果将它传递给另一个带有inout参数的函数,则必须将其标记为.
In-Out Parameters (编辑:李大同) 【声明】本站内容均来自网络,其相关言论仅代表作者个人观点,不代表本站立场。若无意侵犯到您的权利,请及时与联系站长删除相关内容! |