kann kein Wert vom Typ '[Double]' angegeben werden. Ich verwende Swix zum Erstellen von Matrizen in Swift. Ich formiere meine Matrix mit einer Liste von x Werten. Das war kein Problem, wenn meine Liste von X-Werten eine Liste von Ganzzahlen war, aber wenn ich versuche, Dezimalzahlen in meiner Liste von X-Werten zu verwenden, erhalte ich den Fehler "Kann keinen Wert vom Typ '[Double]'" indizieren. Hier ist mein Code:In Swift
@IBAction func button(sender: UIButton) {
let x_values = [3.629, 2, 3]
let y_values:[Double] = [4, 8, 16]
// Counters for loops
var columns = 0
var x_parse = 0
// Create Swix matrix
var mat = eye(x_values.count)
// Assign values to matrix from x_values
while columns < x_values.count {
var rows = x_values.count - 1
var exponent = x_values.count
while rows > -1 {
let element = x_values[x_parse] ^^ exponent
mat[columns, rows] = element
rows = rows - 1
exponent = exponent - 1
}
columns = columns + 1
x_parse = x_parse + 1
}
let y_ndarray = asarray(y_values)
let solution = solve(mat, b: y_ndarray)
print(String(solution))
print(solution)
print(label.text = String(solution))
}
Die Frage stellt sich in der Zeile:
let element = x_values[x_parse] ^^ exponent
Hervorhebung x_values als Problem.
Der Code des ^^ Operator definieren ist:
infix operator ^^ { }
func ^^ (radix: Int, power: Int) -> Int {
return Int(pow(Double(radix), Double(power)))
}
Wie soll ich die Werte in meiner Liste zugreifen, wenn sie verdoppelt enthält?
Können Sie uns zeigen, wie '^^' Operator in Swix definiert ist (oder ist das ein Operator, den Sie selbst definiert haben?)? Dies scheint ein klassischer Fall eines verschleierten Fehlers zu sein: Wo die wahre Quelle des Fehlers höchstwahrscheinlich nicht der Versuch ist, "x_values" zu indizieren, sondern die Verwendung von '^^' auf lhs 'x_values' (Typ' [Double] ') und rhs 'exponent' (Typ' Int'). – dfri
In der Swift-Standardbibliothek gibt es keinen '^^' -Operator, dieser muss benutzerdefiniert sein. –
Minor "edit" zu meinem Kommentar oben: _ "... Verwendung von' ^^ 'auf lhs' x_values [x_parse] '(Typ' Double') und rhs 'exponent' (Typ' Int') "_. @MartinR: Er erwähnt kurz [Swix] (https://github.com/stsievert/swix), also möglicherweise einen dort definiert (obwohl ich es nicht finden kann). – dfri