gpt4 book ai didi

ios - Swift 数组下标索引中的错误?

转载 作者:行者123 更新时间:2023-11-28 05:33:41 25 4
gpt4 key购买 nike

我已经从我的项目中分离出一些可以粘贴到 Playground 中的 Swift 代码。它会在正常的 Xcode 编辑和 Playground 中产生错误“无法找到接受提供的参数的 '+' 的重载”。错误指的是最后一行(非平凡的)。

import UIKit

let points = 40
let max = points-1

let L = 10.0
let Deltat = 0.01
let Deltax = L/Double(points)

var a = [Double](count: points, repeatedValue: 0.0)
var b = [Double](count: points, repeatedValue: 0.0)
var c = [Double](count: points, repeatedValue: 0.0)

for i in 1..<max-1
{ //let iPlus1 = i+1
//let temp = 0.5*Deltat/Deltax
c[i] = 0.5*(a[i+1] + a[i-1]) + 0.5*Deltat/Deltax * (b[i+1] - b[i-1])
}

如果我取消注释“let iPlus1...”行并进行以下编辑,Swift 将接受该代码。

{   let iPlus1 = i+1
//let temp = 0.5*Deltat/Deltax
c[i] = 0.5*(a[iPlus1] + a[i-1]) + 0.5*Deltat/Deltax * (b[i+1] - b[i-1])
}

如果我取消注释“let temp...”行并进行以下编辑,Swift 将再次接受该代码。

{   //let iPlus1=i+1
let temp = 0.5*Deltat/Deltax
c[i] = 0.5*(a[i+1] + a[i-1]) + temp * (b[i+1] - b[i-1])
}

这些编辑对我来说都没有任何意义,因为它们都是看似微不足道的替换。我知道 Swift 永远不会为我隐式类型转换。原始代码中似乎没有任何隐式类型转换尝试——所有 Int 和 Double 都按预期声明。我开始相信这是 Swift 数组下标索引的错误。

最佳答案

这是一个已知的 swift 错误:长语句会产生奇怪的编译错误。只需将您的行分成两行,例如:

c[i] = 0.5*(a[i+1] + a[i-1])
c[i] += 0.5*Deltat/Deltax * (b[i+1] - b[i-1])

我发现同一行中超过 4 或 5 个算术运算会发生这种情况,但这不是规则,只是在某些表达式类型中找到的数字 - 在其他情况下可能会有所不同。

例如看这个问答:Xcode Beta 6.1 and Xcode 6 GM stuck indexing for weird reasonXcode 6 with Swift super slow typing and autocompletion (这最后一个其实是导致慢的,但是解决方法一样,所以root大概是一样的)

关于ios - Swift 数组下标索引中的错误?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/26244263/

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