gpt4 book ai didi

ios - 可变运算符的左侧不可变 '..<' 返回不可变值

转载 作者:搜寻专家 更新时间:2023-11-01 06:26:14 25 4
gpt4 key购买 nike

我在 2.0 年前用 Swift 开发了一个应用程序,它运行得很流畅。今天我将代码更新为 3.0(后来更新为 4.0),但我遇到了一个问题,说“变异运算符的左侧不可变'..<'返回不可变值”我似乎无法解决。

This answer从“+=”中删除“=”对我不起作用,希望有人能帮助我解决这个问题。

for i: CGFloat in 0  ..< self.frame.size.width / (groundTexture.size().width) += 1 {

完整代码如下:

func moveGroundFunc(_ duration: TimeInterval, piece: SKSpriteNode) {
let groundMovingLeft = SKAction.moveBy(x: groundTexture.size().width, y: 0, duration: duration)

let resetGround = SKAction.moveBy(x: -groundTexture.size().width, y: 0, duration: 0)

let groundMovingLeftForever = SKAction.repeatForever(SKAction.sequence([groundMovingLeft, resetGround]))

for i: CGFloat in 0 ..< self.frame.size.width / (groundTexture.size().width) += 1 {
piece.size = CGSize(width: 1500, height: groundPiece.size.height)
piece.position = CGPoint(x: i * piece.size.width, y: piece.size.height - 75)
}

最佳答案

您的代码试图改变表达式的结果(使用 += 1 );这是不可能的,因为匿名结果是常量,因此是不可变的。

我不确定为什么要更改 += 1+1没有用,但你可以简单地将它分成两行。如果将范围运算符从 ..< 更改为至 ...你可以去掉 +1

您的另一个问题是您不能使用 CGFloat 的范围- 您需要使用实现 SignedInteger 的类型.整数除法可能不会给您相同的结果。如果不是,那么您可以将循环更改为使用递增而不是范围。

let width = Int(self.frame.size.width / groundTexture.size().width)

for i in 0...width {
piece.size = CGSize(width: 1500, height: groundPiece.size.height)
piece.position = CGPoint(x: i * piece.size.width, y: piece.size.height - 75)
}

关于ios - 可变运算符的左侧不可变 '..<' 返回不可变值,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/54209300/

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