簡體   English   中英

Swift-'For'循環未在總結果中添加變量

[英]Swift- 'For' Loop not adding variable to total result

我正在嘗試使用Swift在Playground中創建一個函數,在該函數中進行多次計算,然后將其添加到計算的總和中,直到循環結束。 一切似乎都正常,只是當我嘗試將每個計算結果加到最后一個總數時,它只是給了我計算值。 這是我的代碼:

func Calc(diff: String, hsh: String, sperunit: Float, rate: Float, n: Int16, p: Float, length: Int16) -> Float {
    //Divisions per Year
    let a: Int16 = length/n
    let rem = length - (a*n)
    let spl = Calc(diff, hsh: hash, sperunit: sperunit, rate: rate)

    for var i = 0; i < Int(a) ; i++ { //also tried for i in i..<a
        var result: Float = 0
        let h = (spl * Float(n) / pow (p,Float(i))) //This gives me a correct result
        result += h //This gives me the same result from h

        finalResult = result
    }
    finalResult = finalResult + (Float(rem) * spl / pow (p,Float(a))) //This line is meant to get the result variable out of the loop and do an extra calculation outside of the loop
    print(finalResult)
    return finalResult
}

難道我做錯了什么?

當前,變量result的作用域是循環,並且不在循環之外。 此外,循環的每次運行都會創建一個新的result變量,並使用0初始化。

您要做的是將var result: Float = 0行移動var result: Float = 0 for循環前的var result: Float = 0

var result: Float = 0
for var i = 0; i < Int(a) ; i++ {
    let h = (spl * Float(n) / pow (p,Float(i)))
    result += h

    finalResult = result
}

另外,您可以刪除finalResult = result的重復分配,並在循環結束后執行一次。

您可能可以完全刪除finalResult 寫吧

var result: Float = 0
for var i = 0; i < Int(a) ; i++ { 
    let h = (spl * Float(n) / pow (p,Float(i)))
    result += h
}
result += (Float(rem) * spl / pow (p,Float(a)))
print(result)
return result

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM