数组每个索引有多个值?
问题出现的原因是需要存储一个索引下的多个值。解决方法可以使用元组(Value, Value)或创建一个结构体(struct)来处理这些值。如果计划重复使用这对值,那么使用结构体是比较好的选择。
另外,不需要添加 [1..3],只需要在方括号内放入相应的值即可。
使用结构体的示例代码如下:
struct Value {
var name: String
var lastName: String
}
let values = [Value(name: "Mary", lastName: "Queen"), Value(name: "John", lastName: "Black")]
// 访问属性
let lastName = values[1].lastName
或者可以使用元组的示例代码如下:
let tuples = [("Mary", "Queen"), ("John", "Black")]
let lastNameTuple = tuples[1].1
希望你能喜欢 Swift!谢谢你的示例!但我还是好奇 SoloLearn 给出的示例代码本身是否有意义?
其实,不需要使用任何元组,问题中的代码本身就可以正常工作。
在上述代码中,问题的原因是对数组的指定范围使用了Array.subscript(_:)
方法进行替换。具体来说,考虑以下数组:
var shoppingList = ["Apples", "Strawberries", "Pears", "Pineaples"]
通过以下代码:
shoppingList[1...3] = ["Bananas", "Oranges"]
Strawberries
、Pears
和Pineaples
将被Bananas
和Oranges
替换。
因此,最终的数组将是:Apples
、Bananas
、Oranges
。
谢谢,这正是我不明白的地方!由于某种原因,我以为在1到3的范围内,每个元素都会被替换为"bananas"和"oranges",所以数组会在每个索引处有两个值,这让我感到困惑。现在我明白了!
数组的索引范围内赋值时,原来的元素会被移除,新的元素会替代它们的位置。这可能会导致数组变长或变短。
以上示例中,我们创建了一个包含0到5的整数的数组。然后,我们将索引为1到3的元素赋值为[-1, -2]。赋值后,原来的元素1和2被移除,而新的元素[-1, -2]被放入它们的位置。因此,数组的长度变短了1个元素。
如果我们需要在数组的索引范围内赋值多个元素,但又不想改变数组的长度,我们可以使用以下解决方法:
1. 使用相同数量的元素进行赋值。例如,如果我们想要将索引1到3的元素替换为[-1, -2, -3],我们可以这样做:
array[1...3] = [-1, -2, -3]
这样,数组的长度将保持不变。
2. 使用索引范围外的元素进行替换。如果我们想要在索引范围1到3之间插入新的元素,但又不想改变数组的长度,我们可以使用索引范围外的元素进行替换。例如,我们可以这样做:
array[1...3] = [-1, -2, -3, 3, 4]
这样,索引为1到3的元素将被替换为[-1, -2, -3],而原来的元素3和4将被保留在数组中。
通过使用上述解决方法,我们可以在数组的索引范围内赋值多个元素,同时保持数组的长度不变。