如何快速使用最后一个变量

时间:2020-04-26 03:03:09

标签: swift

我了解惰性变量的工作原理,但我不知道如何正确实现。 下面仅是一个示例:

func calculation() -> (firstValue: Float, secondValue: Float) {
    var a: Float = 2
    var b: Float = 2

    for i in 1...1000 {
        a = a + Float(i)
        b = b + Float(i)
        print(i)
    }

    return (a, b)
}

let m = calculation().firstValue
let n = calculation().secondValue

当我运行它时,计算函数运行了两次(1000次+ 1000次),第一次将值获取为m,第二次获取n值。

我必须采取什么措施来强制功能 Calculation 不仅不运行时间,而且存储值m和n而不重复两次。

2 个答案:

答案 0 :(得分:2)

lazy关键字用于class / struct / enum成员变量。 对于您的示例,您可以这样实现:

class Solution {
    lazy var tuple: (firstValue: Float, secondValue: Float) = {
        var a: Float = 2
        var b: Float = 2

        for i in 1...1000 {
            a = a + Float(i)
            b = b + Float(i)
            print(i)
        }

        return (a, b)
    }()
}

let s = Solution()
let m = s.tuple.firstValue
let n = s.tuple.firstValue

tuple变量存储以下闭包返回的值,该闭包仅运行一次。

您还可以使用变量来记录函数的返回值。

let pair = calculation()
let m = pair.firstValue
let n = pair.secondValue

答案 1 :(得分:2)

${isFree}是用于延迟计算直到首次使用结果的关键字,因此不适合您的情况。

您可以这样写:

lazy

或者这个:

let values = calculation()
let m: Float = values.firstValue
let n: Float = values.secondValue