Swift 无法为类型为';[双倍]';迅速地
我使用Swix在Swift中创建矩阵。我使用x值列表形成矩阵。当我的x值列表是一个整数列表时,这不是一个问题,但是当我尝试在x值列表中使用十进制数时,我得到错误“无法为“[Double]”类型的值下标”。这是我的密码:Swift 无法为类型为';[双倍]';迅速地,swift,matrix,subscript,Swift,Matrix,Subscript,我使用Swix在Swift中创建矩阵。我使用x值列表形成矩阵。当我的x值列表是一个整数列表时,这不是一个问题,但是当我尝试在x值列表中使用十进制数时,我得到错误“无法为“[Double]”类型的值下标”。这是我的密码: @IBAction func button(sender: UIButton) { let x_values = [3.629, 2, 3] let y_values:[Double] = [4, 8, 16] // Counters for loops
@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))
}
突出显示x_值作为问题
定义^^运算符的代码为:
infix operator ^^ { }
func ^^ (radix: Int, power: Int) -> Int {
return Int(pow(Double(radix), Double(power)))
}
如果我的列表中包含双精度的值,我应该如何访问它?这个问题似乎是由^^运算符的定义引起的。我用找到的另一个代码片段替换了定义^^运算符的代码。新的操作员定义是:
infix operator ** { associativity left precedence 170 }
func ** (num: Double, power: Double) -> Double{
return pow(num, power)
}
当我将我的x_值作为一个双倍列表时,它就起作用了:
let x_values:[Double] = [3.629, 3.561, 3.527]
并更新我的代码,如下所示:
let element = x_values[x_parse] ** exponent
现在一切似乎都正常工作。您能告诉我们如何在Swix中定义
^
运算符(或者这是您自己定义的运算符吗?)?这似乎是一个典型的模糊错误:错误的真正来源很可能不是试图索引x_值
,而是在lhsx_值
(type[Double]
)和rhs指数(typeInt
)上使用^
。Swift标准库中没有^
运算符,这必须是自定义的。对我上面的评论进行小调“编辑”:“…在lhsx_值[x_解析]
(typeDouble
)和rhs指数(typeInt
)上使用^
”@MartinR:他简单地提到了,所以可能在那里定义了一个操作符(尽管我找不到)。@dfri我忘了提到我在代码前面定义了一个^^操作符。这是一个指数运算符。@dfri指数运算符到目前为止一直工作正常。我还尝试使用Swift'double(exponent)'提供的double函数将rhs'exponent'转换为double,但得到了相同的错误。
let element = x_values[x_parse] ** exponent