首页 > 解决方案 > swift中不同“流路径”的嵌套函数技术

问题描述

我正在学习面向对象的东西,并尝试将嵌套函数合并到我的代码中,以便了解这些不同的操作如何流动和工作,特别是嵌套函数。我想将值从一个函数传递给另一个函数,然后根据每个嵌套函数中的计算,输出某些最终数字。我无法理解如何在方法中获取和重新声明返回值,以便可以再次使用它们。

粗略的单嵌套示例:

func increaseNumbers(numOne: Double, numTwo: Double) -> (Double, Double) {
var numOneIncreased = numOne + 2
var numTwoIncreased = numTwo + 5

    func playWithNumbersMore(warpOne: Double, warpTwo: Double) -> (Double, Double) {
    if warpOne < 50 {
    var adjustedOne = warpOne + 16.5
    var adjustedTwo = warpTwo + 20.8
    } else { do nothing... }
        return (adjustedOne, adjustedTwo)
    }

playWithNumbersMore(warpOne: numOneIncreased, warpTwo: numTwoIncreased)
// How do i re-assign the return values inside playWithNumbersMore?

return (something, somethingTwo)
}

粗略地说,如果可能的话,这就是我想做的:

func increaseNumbers(numOne: Double, numTwo: Double) -> (Double, Double) {
var numOneIncreased = numOne + 2
var numTwoIncreased = numTwo + 5

    func playWithNumbersMore(warpOne: Double, warpTwo: Double) -> (Double, Double) {
    if warpOne < 50 {
    var adjustedOne = warpOne + 16.5
    var adjustedTwo = warpTwo + 20.8
    } else { do nothing... }
        return (adjustedOne, adjustedTwo)
    }

// I want to be able to take return values and do more with them... as well as redefine them 
// on completion of final "parent function"

// Sort of like this:
var newNumbToPlayOne = adjustedOne
var newNumbToPlayTwo = adjustedTwo

func playMoreWithNewNumbers...

}

这是可能的还是我出轨了?

标签: swiftnested

解决方案


func increaseNumbers(numOne: Double, numTwo: Double) -> (Double, Double) {
var numOneIncreased = numOne + 2
var numTwoIncreased = numTwo + 5

    func playWithNumbersMore(warpOne: Double, warpTwo: Double) -> (Double, Double) {
    if warpOne < 50 {
    var adjustedOne = warpOne + 16.5
    var adjustedTwo = warpTwo + 20.8
        return (adjustedOne, adjustedTwo)
    }

let result = playWithNumbersMore(warpOne: numOneIncreased, warpTwo: numTwoIncreased)
        numOneIncreased = result.0 // result.0 is a adjustedOne
        numTwoIncreased = result.1 // result.1 is a adjustedTwo

return result
}

这就是您可以使用 playWithNumbersMore 数据结果的方式。我错了还是这是一个正在寻找的东西?


推荐阅读