Я изо всех сил пытаюсь понять, почему я получаю ошибку компилятора («переменная« сетка »использовалась до инициализации») на следующей 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 ^
2 ответа
Вы объявили переменную типа MatrixGrid
, но никогда не инициализировали ее. У него нет значения, потому что вы его не установили. Естественно, оно должно иметь значение, прежде чем вы сможете использовать его значение.
Вы объявляете тип переменной, ее имя, но не указываете ее значение var myGrid: MatrixGrid
. Поскольку myGrid
не инициализирован, компилятор говорит вам, что вам нужно предоставить значение для этого свойства перед его использованием. var myGrid: MatrixGrid = MatrixGrid()
должен исправить вашу проблему
Похожие вопросы
Новые вопросы
ios
iOS - мобильная операционная система, работающая на Apple iPhone, iPod touch и iPad. Используйте этот тег [ios] для вопросов, связанных с программированием на платформе iOS. Используйте связанные теги [target-c] и [swift] для проблем, характерных для этих языков программирования.