【问题标题】:Curious about the weird initialization syntax of body: Some View in ContentView in SwiftUI好奇 body 奇怪的初始化语法:Some View in ContentView in SwiftUI
【发布时间】:2021-01-14 10:17:33
【问题描述】:

默认代码:

struct ContentView: View {
    var body: some View {
        Text("Hello World!")
    }
    
}

我猜上面的代码应该等价于下面的代码:

struct ContentView: View {
    var body: some View = {
        Text("Hello World!")
    }()
    
}

甚至更全面:

struct ContentView: View {
    var body: some View = {
        () -> Text in
            return Text("Hello World!")
    }()
    
}

我只想知道在哪里可以找到第一个代码块中body 的初始化语法的引用?我在the swift programming lanauageswift.org 的闭包章节中没有找到任何关于这种语法的描述。

【问题讨论】:

  • 您好,欢迎您,您能澄清一下您要解决的具体问题是什么吗?

标签: ios swift swiftui swift5


【解决方案1】:

您错误地将属性body 识别为存储属性。它实际上是一个computed property。将其更改为存储属性会显着改变代码的语义。

相当于:

var body: some View {
    get {
        return Text("Hello World!")
    }
}

returnget 可以在 Shorthand Property Declarationread-only computed property 中省略。

如果 getter 的整个主体是单个表达式,则 getter 会隐式返回该表达式。

您可以通过删除 get 关键字及其大括号来简化只读计算属性的声明

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 2011-02-22
    • 1970-01-01
    • 2017-12-24
    • 1970-01-01
    • 2017-05-18
    • 2021-12-06
    • 1970-01-01
    相关资源
    最近更新 更多