[英]Swift closure syntax using { … in }
在Apple SwiftUI 教程:繪制路徑和形狀中,顯示了以下語法:
struct Badge: View {
var body: some View {
GeometryReader { geometry in
Path { path in
...
}
.fill(Color.black)
}
}
}
我沒有看到Swift 文檔中關於結構的語法,感到很困惑。
此外,如何知道geometry
在GeometryReader
語句“中”,無論這意味着什么?
這與結構無關。 這就是閉包語法,其中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.