数组每个索引有多个值?

19 浏览
0 Comments

数组每个索引有多个值?

我正在学习Swift,并通过Sololearn课程获取一些知识,但我遇到了一些我不理解的问题。

这是关于修改数组的值的问题。有疑问的部分如下所示:

在下面的示例中,索引为1、2、3的元素被两个新值替换。

shoppingList[1...3] = [“香蕉”, “橙子”]

一个一维数组如何在一个索引上存储多个值?我如何访问它们?我有误解吗?

0
0 Comments

问题出现的原因是需要存储一个索引下的多个值。解决方法可以使用元组(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 给出的示例代码本身是否有意义?

其实,不需要使用任何元组,问题中的代码本身就可以正常工作。

0
0 Comments

在上述代码中,问题的原因是对数组的指定范围使用了Array.subscript(_:)方法进行替换。具体来说,考虑以下数组:

var shoppingList = ["Apples", "Strawberries", "Pears", "Pineaples"]

通过以下代码:

shoppingList[1...3] = ["Bananas", "Oranges"]

StrawberriesPearsPineaples将被BananasOranges替换。

因此,最终的数组将是:ApplesBananasOranges

谢谢,这正是我不明白的地方!由于某种原因,我以为在1到3的范围内,每个元素都会被替换为"bananas"和"oranges",所以数组会在每个索引处有两个值,这让我感到困惑。现在我明白了!

0
0 Comments

数组的索引范围内赋值时,原来的元素会被移除,新的元素会替代它们的位置。这可能会导致数组变长或变短。

以上示例中,我们创建了一个包含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将被保留在数组中。

通过使用上述解决方法,我们可以在数组的索引范围内赋值多个元素,同时保持数组的长度不变。

0