Нужно создать массив множеств swift - PullRequest
0 голосов
/ 05 октября 2018

Я новичок в 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]))
}

1 Ответ

0 голосов
/ 05 октября 2018

Set - универсальный тип.Когда вы говорите var a: Set = [1, 2], компилятор выводит необходимый параметр универсального типа для вас, делая его эквивалентным var a: Set<Int> = [1, 2]

Чтобы создать пустое Array из Set s, вы должны явно указать, чтовроде 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).")
}
...