簡體   English   中英

好奇body奇怪的初始化語法:Some View in ContentView in SwiftUI

[英]Curious about the weird initialization syntax of body: Some View in ContentView in SwiftUI

默認代碼:

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的這種初始化語法的引用? 我在swift.orgthe swift programming lanauage書籍的閉包章節中沒有找到任何關於此語法的描述。

您錯誤地將屬性body標識為存儲屬性。 它實際上是一個計算屬性 將其更改為存儲屬性會顯着改變代碼的語義。

它相當於:

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

速記屬性聲明只讀計算屬性中可以省略returnget

如果 getter 的整個主體是單個表達式,則 getter 隱式返回該表達式。

您可以通過刪除 get 關鍵字及其大括號來簡化只讀計算屬性的聲明

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM