我已經從我的項目中分離出一些可以粘貼到遊樂場的Swift代碼。它產生一個錯誤「無法找到'+'的超載,它接受在正常的Xcode編輯和Playground中提供的參數」「。錯誤指的是最後一條(非平凡)線。Swift數組下標索引中的錯誤?
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絕對不會爲我隱式強調。在原始代碼中似乎沒有嘗試使用隱式類型轉換 - 所有的Ints和Doubles都是按照預期進行聲明的。我開始相信這是一個Swift數組下標索引的錯誤。
如果你把身邊這些括號會發生什麼:
在這個問答&神色例如加法?例如'a [(i + 1)]'或者'+(0.5 * Deltat/Deltax)'? – 2014-10-07 20:09:48
在發佈原始問題之前,我實際上已嘗試過諸如您的建議之類的內容。這些建議都不能解決問題。即使他們這樣做,它仍然會提示一個錯誤。 – 2014-10-07 21:58:42
哦,我絕對同意,有一個錯誤,我只是好奇。 :) – 2014-10-08 13:52:20