首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >Swift闭包语法使用{ ...in }

Swift闭包语法使用{ ...in }
EN

Stack Overflow用户
提问于 2020-06-12 17:58:32
回答 2查看 213关注 0票数 1

Apple SwiftUI Tutorial: Drawing Paths and Shapes上,将显示以下语法:

代码语言:javascript
复制
struct Badge: View {
    var body: some View {
        GeometryReader { geometry in
            Path { path in
            ...
            }
            .fill(Color.black)
        }
    }
}

我没有看到Swift docs on structs中的语法,感到非常困惑。

此外,如何知道geometryGeometryReader语句中,不管这是什么意思?

EN

回答 2

Stack Overflow用户

回答已采纳

发布于 2020-06-12 18:06:12

这是尾部闭包的简化语法,因此

代码语言:javascript
复制
Path { path in
...
}

就像

代码语言:javascript
复制
Path( { (path) in
...
})

使用的Path构造函数的数量

代码语言:javascript
复制
/// 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元素中看到相同的语法。

票数 0
EN

Stack Overflow用户

发布于 2020-06-12 18:03:20

这与结构无关。这就是闭包语法,其中in之前的变量名是闭包的输入参数。

在SwiftUI的上下文中,该闭包实际上是一个ViewBuilder,它是一种特定类型的函数构建器。您可以阅读有关函数阅读器和其他语法糖的更多信息,这些语法糖使SwiftUI成为可能的here

您可以通过在Xcode中单击闭包输入参数来了解闭包输入参数的类型,就像其他变量一样。或者,您可以查看GeometryReader的文档,了解它的闭包接受哪些输入参数。

票数 1
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/62341839

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档