如何在 swift 中初始化
how to initialize in swift
我想设置一个盒子数组,每个盒子都有一个名称和物理尺寸以及它们周围的不确定性。我创建了以下 class:
struct PhysUnit {
var Mean: Double = 0.0
var Sigma: Double = 0.0
}
class Box {
var Name: String = "null"
var Width: PhysUnit = (Mean = 0.0 , Sigma = 0.0)
var Depth: PhysUnit
var Height: PhysUnit
}
func setupShelves() {
var A1Box = box()
A1Box.name = "A1"
A1Box.Width.Mean = 40.0
A1Box.Width.Sigma = 0.5
//etc
shelves.append(A1Box)
return }
但是如何初始化 class 框?我尝试了很多方法,如所示示例,但 none 有效。
你写box()。试试这个:var A1Box = Box()
您的代码中有一些错误。
- 大小写很重要。使用
Box
,而不是 box
.
- 类 必须有一个初始化器(一个结构应该为你创建一个)
- class/struct 的所有非可选属性必须在实例初始化时初始化
结构可能更适合您的模型:
struct PhysUnit {
var Mean: Double = 0.0
var Sigma: Double = 0.0
}
struct Box {
var Name: String?
var Width: PhysUnit
var Depth: PhysUnit
var Height: PhysUnit
}
func setupShelves() {
var A1Box = Box(Name: "A1", Width: PhysUnit(Mean: 40, Sigma: 0.5), Depth: PhysUnit(), Height: PhysUnit())
shelves.append(A1Box)
}
但是如果你坚持使用 class 你可以这样做:
struct PhysUnit {
var Mean: Double = 0.0
var Sigma: Double = 0.0
}
class Box {
var Name: String?
var Width: PhysUnit
var Depth: PhysUnit
var Height: PhysUnit
init(Name: String?, Width: PhysUnit, Depth: PhysUnit, Height: PhysUnit) {
self.Name = Name
self.Width = Width
self.Depth = Depth
self.Height = Height
}
}
func setupShelves() {
var A1Box = Box(Name: "A1", Width: PhysUnit(Mean: 40, Sigma: 0.5), Depth: PhysUnit(), Height: PhysUnit())
shelves.append(A1Box)
}
快速回答:
struct PhysUnit {
var mean: Double = 0.0
var sigma: Double = 0.0
}
class Box {
var name: String = "null"
var width: PhysUnit = PhysUnit()
var depth: PhysUnit?
var height: PhysUnit?
init() {}
}
func setupShelves() {
var A1Box = Box()
A1Box.name = "A1"
A1Box.width.mean = 40.0
A1Box.width.sigma = 0.5
...
shelves.append(A1Box)
}
几件事:
- 您需要初始化所有变量或将它们设置为可选(这
是我所做的)
- 因为
PhysUnit
有默认值,所以不需要
将它们设置为 var width
默认值。
编辑说明:我还更改了大小写以匹配 Swift 最佳实践
给你...
struct PhysUnit {
var mean: Double = 0.0
var sigma: Double = 0.0
}
struct Box {
var name: String?
var width = PhysUnit()
var depth: PhysUnit?
var height: PhysUnit?
}
func setupShelves() {
var a1Box = Box()
a1Box.name = "A1"
a1Box.width.mean = 40.0
a1Box.width.sigma = 0.5
}
您的代码存在多个问题。如果您做过 Swift 教程,它可能会有所帮助。
我想设置一个盒子数组,每个盒子都有一个名称和物理尺寸以及它们周围的不确定性。我创建了以下 class:
struct PhysUnit {
var Mean: Double = 0.0
var Sigma: Double = 0.0
}
class Box {
var Name: String = "null"
var Width: PhysUnit = (Mean = 0.0 , Sigma = 0.0)
var Depth: PhysUnit
var Height: PhysUnit
}
func setupShelves() {
var A1Box = box()
A1Box.name = "A1"
A1Box.Width.Mean = 40.0
A1Box.Width.Sigma = 0.5
//etc
shelves.append(A1Box)
return }
但是如何初始化 class 框?我尝试了很多方法,如所示示例,但 none 有效。
你写box()。试试这个:var A1Box = Box()
您的代码中有一些错误。
- 大小写很重要。使用
Box
,而不是box
. - 类 必须有一个初始化器(一个结构应该为你创建一个)
- class/struct 的所有非可选属性必须在实例初始化时初始化
结构可能更适合您的模型:
struct PhysUnit {
var Mean: Double = 0.0
var Sigma: Double = 0.0
}
struct Box {
var Name: String?
var Width: PhysUnit
var Depth: PhysUnit
var Height: PhysUnit
}
func setupShelves() {
var A1Box = Box(Name: "A1", Width: PhysUnit(Mean: 40, Sigma: 0.5), Depth: PhysUnit(), Height: PhysUnit())
shelves.append(A1Box)
}
但是如果你坚持使用 class 你可以这样做:
struct PhysUnit {
var Mean: Double = 0.0
var Sigma: Double = 0.0
}
class Box {
var Name: String?
var Width: PhysUnit
var Depth: PhysUnit
var Height: PhysUnit
init(Name: String?, Width: PhysUnit, Depth: PhysUnit, Height: PhysUnit) {
self.Name = Name
self.Width = Width
self.Depth = Depth
self.Height = Height
}
}
func setupShelves() {
var A1Box = Box(Name: "A1", Width: PhysUnit(Mean: 40, Sigma: 0.5), Depth: PhysUnit(), Height: PhysUnit())
shelves.append(A1Box)
}
快速回答:
struct PhysUnit {
var mean: Double = 0.0
var sigma: Double = 0.0
}
class Box {
var name: String = "null"
var width: PhysUnit = PhysUnit()
var depth: PhysUnit?
var height: PhysUnit?
init() {}
}
func setupShelves() {
var A1Box = Box()
A1Box.name = "A1"
A1Box.width.mean = 40.0
A1Box.width.sigma = 0.5
...
shelves.append(A1Box)
}
几件事:
- 您需要初始化所有变量或将它们设置为可选(这 是我所做的)
- 因为
PhysUnit
有默认值,所以不需要 将它们设置为var width
默认值。
编辑说明:我还更改了大小写以匹配 Swift 最佳实践
给你...
struct PhysUnit {
var mean: Double = 0.0
var sigma: Double = 0.0
}
struct Box {
var name: String?
var width = PhysUnit()
var depth: PhysUnit?
var height: PhysUnit?
}
func setupShelves() {
var a1Box = Box()
a1Box.name = "A1"
a1Box.width.mean = 40.0
a1Box.width.sigma = 0.5
}
您的代码存在多个问题。如果您做过 Swift 教程,它可能会有所帮助。