尽管有 init,为什么我会收到 "Variable 'grid' used before being initialized" 错误?
Why am I getting "Variable 'grid' used before being initialized" error despite having an init?
我很难理解为什么我在以下 Xcode Swift 游乐场上遇到编译器错误 ("Variable 'grid' used before being initialized")。
[提前致歉,我是Swift菜鸟。感谢您的帮助!]
我在 Xcode 10.3 的 iOS 游乐场中创建了以下内容。
我正在尝试创建一个单元格的二维网格(10 x 10),每个单元格都包含一些特定的属性(例如,值、providedByUser 等)。
我为每个单元格的属性提供了初始值。
我还有一个 init() 用于创建网格本身。希望 init() 能为我创建我想要的 10 x 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)
Playground 在打印行上写着 "Variable 'myGrid' used before being initialized"。
控制台提供以下内容:
错误:Grid.playground:20:7:错误:变量 'myGrid' 在初始化之前使用
打印(我的网格)
^
Sudoku Grid.playground:19:5: 注意:这里定义了变量
var myGrid: 矩阵网格
^
您声明了一个 MatrixGrid
类型的变量,但您从未对其进行初始化。它没有价值,因为你没有设置一个。当然,它需要有一个值,你才能使用它的值。
您正在声明变量的类型及其名称,但未为其提供值var myGrid: MatrixGrid
。由于 myGrid
没有初始化,编译器告诉您在使用它之前需要为 属性 提供一个值。 var myGrid: MatrixGrid = MatrixGrid()
应该可以解决您的问题
我很难理解为什么我在以下 Xcode Swift 游乐场上遇到编译器错误 ("Variable 'grid' used before being initialized")。
[提前致歉,我是Swift菜鸟。感谢您的帮助!]
我在 Xcode 10.3 的 iOS 游乐场中创建了以下内容。
我正在尝试创建一个单元格的二维网格(10 x 10),每个单元格都包含一些特定的属性(例如,值、providedByUser 等)。 我为每个单元格的属性提供了初始值。 我还有一个 init() 用于创建网格本身。希望 init() 能为我创建我想要的 10 x 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)
Playground 在打印行上写着 "Variable 'myGrid' used before being initialized"。
控制台提供以下内容:
错误:Grid.playground:20:7:错误:变量 'myGrid' 在初始化之前使用 打印(我的网格) ^
Sudoku Grid.playground:19:5: 注意:这里定义了变量 var myGrid: 矩阵网格 ^
您声明了一个 MatrixGrid
类型的变量,但您从未对其进行初始化。它没有价值,因为你没有设置一个。当然,它需要有一个值,你才能使用它的值。
您正在声明变量的类型及其名称,但未为其提供值var myGrid: MatrixGrid
。由于 myGrid
没有初始化,编译器告诉您在使用它之前需要为 属性 提供一个值。 var myGrid: MatrixGrid = MatrixGrid()
应该可以解决您的问题