为什么Swiftui中此变量的值后面有括号?
为什么Swiftui中entries变量的值后面有括号?这是什么意思为什么Swiftui中此变量的值后面有括号?,swift,swiftui,Swift,Swiftui,为什么Swiftui中entries变量的值后面有括号?这是什么意思 func barChartItems() -> [ChartDataEntry] { var entries = [ChartDataEntry]() ... } 这只是一种语法,用于创建类型为ChartDataEntrytype的空类型数组的对象 具体来说,声明后面的括号是类或类型的init()方法调用。由于可以在不使用任何init变量的情况下创建数组类型,因此初始化数组类型时不需要这些变量,事实上
func barChartItems() -> [ChartDataEntry] {
var entries = [ChartDataEntry]()
...
}
这只是一种语法,用于创建类型为
ChartDataEntry
type的空类型数组的对象
具体来说,声明后面的括号是类或类型的init()方法调用。由于可以在不使用任何init变量的情况下创建数组类型,因此初始化数组类型时不需要这些变量,事实上,如果不传递任何内容,Swift最佳做法是不添加它们: 对于类,始终需要使用括号从类创建对象实例 我构建了一个带有@Observable类的小型SwiftUI示例,该类具有多个init()选项。您可以看到init()参数如何通过调用不同的初始值设定项来更改对象的属性:
class MultipleInitOptions:ObservableObject {
@Published var name = "hard coded name"
init(){} // has no parameters, just use empty parenthesis
init(name:String) { // has parameters, pass in a name parameter inside parenthesis
self.name = name
}
}
struct TesterView: View {
@StateObject var hardCoded = MultipleInitOptions()
@StateObject var custom = MultipleInitOptions(name:"custom name")
var body: some View {
VStack {
Text("\(hardCoded.name)")
.padding()
Text("\(custom.name)")
.padding()
}
}
}
这是数组结构所符合的
RangeReplaceableCollection
协议所需的空init()。这与我更喜欢的var条目:[ChartDataEntry]=[]
相同。
class MultipleInitOptions:ObservableObject {
@Published var name = "hard coded name"
init(){} // has no parameters, just use empty parenthesis
init(name:String) { // has parameters, pass in a name parameter inside parenthesis
self.name = name
}
}
struct TesterView: View {
@StateObject var hardCoded = MultipleInitOptions()
@StateObject var custom = MultipleInitOptions(name:"custom name")
var body: some View {
VStack {
Text("\(hardCoded.name)")
.padding()
Text("\(custom.name)")
.padding()
}
}
}