加入收藏 | 设为首页 | 会员中心 | 我要投稿 李大同 (https://www.lidatong.com.cn/)- 科技、建站、经验、云计算、5G、大数据,站长网!
当前位置: 首页 > 百科 > 正文

Swift 4编程语言,inout参数不适用于FunctionType作为Paramter

发布时间:2020-12-14 05:00:53 所属栏目:百科 来源:网络整理
导读:这是 swift文档中的示例代码.我正在学习快速的语言,我看到函数类型作为参数,示例代码没有inout关键字.但我试图使用这个与inout参数,但下面的示例没有按预期工作. https://docs.swift.org/swift-book/LanguageGuide/Functions.html(函数类型作为返回类型) //F
这是 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(&currentValue))
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(&currentValue))
print(currentValue)

(编辑:李大同)

【声明】本站内容均来自网络,其相关言论仅代表作者个人观点,不代表本站立场。若无意侵犯到您的权利,请及时与联系站长删除相关内容!

    推荐文章
      热点阅读