簡體   English   中英

Swift 閉包語法使用 { ... in }

[英]Swift closure syntax using { … in }

Apple SwiftUI 教程:繪制路徑和形狀中,顯示了以下語法:

struct Badge: View {
    var body: some View {
        GeometryReader { geometry in
            Path { path in
            ...
            }
            .fill(Color.black)
        }
    }
}

我沒有看到Swift 文檔中關於結構的語法,感到很困惑。

此外,如何知道geometryGeometryReader語句“中”,無論這意味着什么?

這與結構無關。 這就是閉包語法,其中in之前的變量名是閉包的輸入參數。

在 SwiftUI 的上下文中,該閉包實際上是ViewBuilder ,它是 function 構建器的特定類型。 您可以在此處閱讀有關 function 閱讀器和其他使 SwiftUI 成為可能的語法糖的更多信息。

您可以通過在 Xcode 中單擊選項來了解閉包輸入參數的類型,就像任何其他變量一樣。 或者您可以查看GeometryReader的文檔以了解其閉包接受的輸入 arguments。

這是尾隨閉包的簡化語法,所以

Path { path in
...
}

Path( { (path) in
...
})

使用的Path構造函數

/// Initializes to an empty path then calls `callback` to add
/// the initial elements.
public init(_ callback: (inout Path) -> ())

順便說一句,這種語法在 SwiftUI 中被廣泛使用,所以你會在VStack {.. }GeometryReader { g in... }ScrollView {... }和幾乎所有其他 SwfitUI 框架的 UI 元素中看到相同的語法。

暫無
暫無

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

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