当前位置: 首页 > 知识库问答 >
问题:

Swift 3-将一个数组作为一个项目附加到另一个数组中

百里星纬
2023-03-14

虽然Swift中的link:Add a element to a array展示了如何将一个项目添加到一个数组中,但我的问题是如何将一个数组作为一个项目添加到另一个数组中。

我没有发现任何类似的问题——我有以下阵列:

[1,2,3][4,5,6]

我想将第一个数组作为一个整体附加到另一个数组,所以我得到这样的结果:

[4,5,6,[1,2,3]]

请注意,这不是预期的结果:

[4,5,6,1,2,3]

我将如何实现这一点?

共有3个答案

商冠玉
2023-03-14
var arrayOne = [1,2,3]
var arrayTwo = [4,5,6]

如果希望结果为:[4,5,6,[1,2,3]]

arrayTwo.append(arrayOne)

上面的代码将arrayOne转换为单个元素,并将其添加到arrayTwo的末尾。

如果你想要结果为:[4,5,6,1,2,3]那么,

arrayTwo.append(contentsOf: arrayOne)

上面的代码将在arrayTwo的末尾添加arrayOne的所有元素。

谢谢

杨豪
2023-03-14
var a: [Any] = [1,2,3]
var b: [Int] = [3,4,5]
a.append(b) // [1, 2, 3, [3, 4, 5]]
常光明
2023-03-14

在这种情况下,容器数组的类型应为[Any],以使其包含int和int数组。

let arr1 = [1,2,3] // by default, it should be of type [Int]
let arr2:[Any] = [4,5,6,arr1]

print(arr2) // [4, 5, 6, [1, 2, 3]]

请注意,Swift是强类型的,默认情况下,数组必须是整数数组,这与Objective-C不同,数组不能包含混合的数据类型。

这就是为什么你应该选择任何类型:

Any可以表示任何类型的实例,包括函数类型。

请注意:

仅当您明确需要Any和AnyObject提供的行为和功能时,才使用它们。最好是明确说明代码中希望使用的类型。

访问元素:

默认情况下,从[Any]数组访问元素的类型应为Any,例如:

let numberOne = arr2[0] // type of Any
let myArray = arr2[3] // type of Any

为了获得所需的数据类型,您应该使用带有可选绑定的as?运算符对其进行强制转换,如下所示:

if let oneInt = arr2[0] as? Int {
    print("one is an Int and it equals to: \(oneInt)")
} else {
    print("one is NOT ad Int")
}
// one is an Int and it equals to: 4

if let oneString = arr2[0] as? String {
    print("one is an Int and it equals to: \(oneString)")
} else {
    print("one is NOT ad Int")
}
// one is NOT ad Int

备注:使用as 运算符将导致应用程序崩溃。

let oneInt = arr2[0] as! Int // works fine
let oneString = arr2[0] as! String // CRASH!

有关as运算符的更多信息,您可能需要查看此问题

 类似资料:
  • 问题内容: 如何在不比较键的情况下将一个数组追加到另一个数组? 最后应该是: 如果我使用或,则将导致以下结果之一: 这样做应该是一件值得做的事,但是要用一种更优雅的方式: 问题答案: 是一种优雅的方式: 做类似的事情: 将不起作用,因为运算符实际上并未合并它们。如果它们的键与相同,则不会执行任何操作。

  • 问题内容: 我有一个JavaScript数组,我想将其推送到一个新数组中。除了我不想成为。我想将所有项目推入新数组: 甚至更好: 因此,新数组现在包含各个数据数组的所有值。是否有一些速记可用,所以我不必遍历每个人,逐个添加项目? 问题答案: 使用concat函数,如下所示: 的值将为(且保持不变;为结果创建并返回一个新数组)。

  • 有一种方法可以将特定的数字从一个数组复制到另一个数组吗? 例如: 我有一个数组 ,我想将奇数和偶数复制到不同的数组中。因此,结果应该是

  • 我正试图将数据复制到数组中,但出现了一个错误,称无法转换类型。我该怎么解决这个问题?

  • 问题内容: 最近有人要求我为一份工作编写3个测试程序。它们将仅使用核心Java API和我选择的任何测试框架来编写。应在适当的地方实施单元测试。 尽管我根本没有收到任何反馈,但我想他们不喜欢我的解决方案(否则我会收到他们的来信),所以我决定在这里展示我的程序,并询问这种实现是否可以认为是好的,并且,如果没有,那为什么呢? 为避免混淆,我现在只问第一个。 实现一个函数,以在另一个更大的数组中查找一个

  • 我想知道是否可以将一个数组查找到另一个数组中。我不感兴趣的是寻找数组的单个元素,而是数组作为一个整体。我试过一些代码 编辑:使用的原因是我的数组的大小,粗略计算,可能是大约1000万。我想要一种高效的搜索技术。 我不确定我的代码是否应该工作。我有很多错误 bm.cpp:12:20:error:“make_boyer_moore_searcher”不是“std”std::make_boyer_moo