这是我的代码:
var states:[[[Int]]] // I create an empty multidimensional array
states = [[[0,0,0],[0,0,0],[0,0,0]]] // I give it a value
// Why does here it doesn't work ? ('@ivalue $T11' is not identical to 'Int')
states.last![0][0] = 1
// And here it does ?
states[0][0][0] = 1
我不明白为什么它会在一个案例中引发错误而在另一个案例中不会引发错误?我以为它会做同样的事情......
答案 0 :(得分:4)
last
会返回最后一个元素,但它不允许您设置新值。实际上,该属性仅实现get
:
/// The last element, or `nil` if the array is empty
var last: T? { get }
所以你不能用它来修改数组。
请注意,如果返回的元素是复合值类型(即结构,如数组或字典),则返回存储在数组中的实际元素的副本。因此,对last
或其任何属性和数据返回的元素所做的任何更改仅在该副本上执行,而不会影响原始数组。