这是
swift文档中的示例代码.我正在学习快速的语言,我看到函数类型作为参数,示例代码没有inout关键字.但我试图使用这个与inout参数,但下面的示例没有按预期工作.
https://docs.swift.org/swift-book/LanguageGuide/Functions.html(函数类型作为返回类型)
//Function Types as Return Types func stepForward(_ input: inout Int) -> Int { return input + 1 } func stepBackward(_ input: inout Int) -> Int { return input - 1 } func chooseStepFunction(backward: Bool) -> (inout Int) -> Int { let a = backward ? stepBackward : stepForward return a } var currentValue = 3 let moveNearerToZero = chooseStepFunction(backward: currentValue > 0) print(moveNearerToZero(¤tValue)) print(currentValue)
实际输出
2
3
预期产出
2
2
因为CurrentValue不是很重要.将currentValue作为3传递最初使用stepBackward()方法打印值2
我想在减量后保持价值.
但是这里没有维持currentValue.
解决方法
这是因为在应用算术之后你实际上并没有为参数赋值,而是只返回新值而不指定它.请尝试以下代码
//Function Types as Return Types func stepForward(_ input: inout Int) -> Int { input += 1 return input } func stepBackward(_ input: inout Int) -> Int { input -= 1 return input } func chooseStepFunction(backward: Bool) -> (inout Int) -> Int { let a = backward ? stepBackward : stepForward return a } var currentValue = 3 let moveNearerToZero = chooseStepFunction(backward: currentValue > 0) print(moveNearerToZero(¤tValue)) print(currentValue)
版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 [email protected] 举报,一经查实,本站将立刻删除。