-2

我是 Swift 的新手,我已经有一段时间没有做过任何编程了,所以请原谅我。我需要一些关于如何创建一个包含一组数字的空数组的帮助。

我要做的是从两个不同的数据文件中读取两组数字,并将它们放入两个不同的数据结构中——在这种情况下——数组。然后我想遍历数组并确定一组数字是否是另一组的子集。我在 swift playground 中创建了以下代码,并对其进行了测试,我知道它可以使用代码中的预定义值来完成。

但是,我似乎无法在网上找到如何创建一组集合。我发现各种链接说明何时使用数组而不是集合,反之亦然。当我尝试声明一个 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]))
}
4

1 回答 1

2

Set是泛型类型。当您说var a: Set = [1, 2]时,编译器会为您推断必要的泛型类型参数,使其等效于var a: Set<Int> = [1, 2]

要使 s 为空ArraySet您必须明确说明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).")
}
于 2018-10-05T19:37:15.150 回答