gpt4 book ai didi

swift - 快速学习,递增变量的问题

转载 作者:搜寻专家 更新时间:2023-11-01 05:53:47 24 4
gpt4 key购买 nike

我又回来了,这可能是一个简单的问题,但它让我难住了。

我在 xcode Playground 中编写了非常小、非常基本的代码。我的代码简单地迭代了一个函数 10 次,每次都打印输出。

var start = 0
var x = 0
var answer = 2 * x

func spin() {
print(answer)
}
while start < 10 {
spin()
x++
start++
}

现在对于我的问题,我的代码似乎正确地增加了“开始”变量....运行和打印 10 次。但是它会打印出一个 0 的列表。由于某种原因,“x”变量没有递增。

我已经查阅了一些关于 swift 的电子书以及文档,据我所知我的代码应该可以工作。

有什么想法吗?

附言根据文档,我也尝试了++x,但无济于事。

编辑

由于以下答案更新了工作代码:

var start = 0
var x = 0
var answer = 2 * x

func spin() {
print("The variable is", x, "and doubled it is", answer)
}
while start <= 10 {
spin()
x++
start++
answer = 2 * x
}

最佳答案

您刚刚在程序开始时将 2 * x 分配给 answer,此时 x == 0,并且 answer 的值在整个程序中保持其初始值。就是这样Value Types在 Swift 以及几乎任何其他语言中工作

如果你希望答案总是x的2倍,你应该这样写

var start = 0
var x = 0
var answer = 2 * x

func spin() {
print(answer)
}
while start < 10 {
spin()
x++
start++
answer = 2 * x
}

感谢 Leo Dabus's answer , 你也可以定义一个 Computed Property每次尝试获取答案的值时计算 2 * x 的值。这样,answer 就变成只读的了,你不能给它赋其他值。每次尝试获取 answer 的值时,它都会执行 2 * x 计算。

var start = 0
var x = 0
var answer: Int {
return 2 * x
}

func spin() {
print(answer)
}
while start < 10 {
spin()
x++
start++
}

关于swift - 快速学习,递增变量的问题,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/33381899/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com