Я изо всех сил пытаюсь понять, почему я получаю ошибку компилятора («переменная« сетка »использовалась до инициализации») на следующей Xcode Swift Playground.

[Я заранее извинюсь, я новичок Свифта. Спасибо за помощь!]

Я создал следующее в iOS Playground в Xcode 10.3.

Я пытаюсь создать двумерную сетку (10 на 10) ячеек, где каждая ячейка содержит определенные атрибуты (например, значение, обеспеченныйBuUser и т. Д.). Я предоставил начальные значения для атрибутов каждой ячейки. У меня также есть init () для создания самой сетки. Мы надеемся, что init () создаст мне сетку 10 на 10, которую я получу.

Тем не менее, я продолжаю получать сообщение об ошибке, когда я спрашиваю, чтобы напечатать мою сетку после объявления ее.

import UIKit

struct Cell
{
    var value: Int = 0
    var providedByUser: Bool = false
    var options: [Int] = [0]
    var guess: Int = 0
}

struct MatrixGrid
{
    var grid: [[Cell]]
    init() {
        grid = Array(repeating: Array(repeating: Cell(value: 0, providedByUser: false, options: [0], guess: 0), count: 10), count: 10)
    }
}

var myGrid: MatrixGrid
print(myGrid)

На игровой площадке в строке печати написано «Переменная myGrid, использованная до инициализации».

Консоль обеспечивает следующее:

Ошибка: Grid.playground: 20: 7: ошибка: переменная 'myGrid' использовалась до инициализации print (myGrid) ^

Sudoku Grid.playground: 19: 5: примечание: здесь определена переменная var myGrid: MatrixGrid ^

-1
MagneticCat 15 Авг 2019 в 07:38

2 ответа

Лучший ответ

Вы объявили переменную типа MatrixGrid, но никогда не инициализировали ее. У него нет значения, потому что вы его не установили. Естественно, оно должно иметь значение, прежде чем вы сможете использовать его значение.

0
Alexander - Reinstate Monica 15 Авг 2019 в 05:08

Вы объявляете тип переменной, ее имя, но не указываете ее значение var myGrid: MatrixGrid. Поскольку myGrid не инициализирован, компилятор говорит вам, что вам нужно предоставить значение для этого свойства перед его использованием. var myGrid: MatrixGrid = MatrixGrid() должен исправить вашу проблему

0
Bashta 15 Авг 2019 в 07:41