我是Swift的新手,距离我已经做过任何编程已经有一段时间了,请原谅我。我需要一些有关如何创建一个包含一组数字的空数组的帮助。
我想做的是从两个不同的数据文件中读取两组数字,并将它们放入两个不同的数据结构(在本例中为数组)。然后,我想遍历数组并确定一组数字是否是另一组数字的子集。我已经在迅速的操场上创建了以下代码,并对其进行了测试,并且我知道可以使用代码中的预定义值来完成。
但是,我似乎在网上找不到任何地方如何创建一组数组。我发现各种各样的链接都说何时使用数组而不是集合,反之亦然。当我尝试声明一个类型为Set的空数组时,它给我一个错误。我将不胜感激有人指出我正确的方向。这是我在操场上键入的代码。
var a: Set = [1,2]
var b: Set = [1,3]
var c: Set = [1,4]
var aa: Set = [1,4,23,29,50]
var bb: Set = [1,3,45,47,65]
var cc: Set = [7,9,24,45,55]
let combiArray = [a, b, c]
let resultsArray = [aa, bb, cc]
for i in 0...2 {
print (resultsArray[i],
combiArray[i],
combiArray[i].isSubset(of: resultsArray[i]))
}
答案 0 :(得分:1)
Set
是通用类型。当您说var a: Set = [1, 2]
时,编译器会为您推断出必要的泛型类型参数,使其等效于var a: Set<Int> = [1, 2]
要使Array
中的Set
为空,您必须明确声明所需的Set
类型,因为编译器无法从Set的内容中推断出它。您正在寻找一个空白的Array<Set<Int>>
,也就是[Set<Int>]
。
要么:
let arrayOfSets: [Set<Int>] = []
或:
let arrayOfSets = [Set<Int>]() // preferred
这就是您的示例所体现的:
let combiArray: [Set<Int>] = [ // TODO: What the heck is a "combi"?
[1, 2],
[1, 3],
[1, 4],
]
let results: [Set<Int>] = [
[1, 4, 23, 29, 50],
[1, 3, 45, 47, 65],
[7, 9, 24, 45, 55],
]
for (combi, result) in zip(combiArray, results) {
print("\(combi) \(combi.isSubset(of: result) ? "is" : "is not") a subset of \(result).")
}