swiftui 中的语法糖疑问

290 天前
 rookiemaster
VStack{
    Image(systemName: "globe")
    Text("👻").font(.largeTitle)
}

上面是一段 swiftui 代码,它能创建一个垂直排列的 view ,里面的闭包是作为 VStack.init 中 content 的参数,查看源码可知 content 的类型是()->Content 。 我的疑问是

Image(systemName: "globe")
Text("👻").font(.largeTitle)

是什么语法,他为什么能返回一个 Content ,我所了解的是要是只有一行代码的话才可以忽略掉 return ,这里不是有两行嘛,求解答。

1555 次点击
所在节点    Swift
2 条回复
XiaoXiaoMagician
290 天前
这段代码之所以不需要 return 关键字,即使它包含了两行代码,是因为 SwiftUI 的视图构建器( ViewBuilder )特性。视图构建器允许你在它的闭包中包含多个视图声明,而不需要显式地返回一个视图。在幕后,视图构建器将这些视图封装成一个组合视图,这通常是通过返回某种形式的 Group 视图来实现的。

在普通的 Swift 函数中,如果函数体包含多行代码,你确实需要使用 return 来返回一个值。但是在 SwiftUI 中,由于视图构建器的特性,这种限制被放宽了,你可以在视图构建器的闭包中包含多个视图组件,而不需要显式地返回它们。

这种设计让 SwiftUI 的代码更加简洁和易读,使得开发者能够以一种接近于声明式布局的方式来构建用户界面。
sunshinev
286 天前
好问题,我看了文档也没看明白

只写了 Content:View ...所以这个 swiftui 的文档真是晦涩难懂

这是一个专为移动设备优化的页面(即为了让你能够在 Google 搜索结果里秒开这个页面),如果你希望参与 V2EX 社区的讨论,你可以继续到 V2EX 上打开本讨论主题的完整版本。

https://www.v2ex.com/t/1021570

V2EX 是创意工作者们的社区,是一个分享自己正在做的有趣事物、交流想法,可以遇见新朋友甚至新机会的地方。

V2EX is a community of developers, designers and creative people.

© 2021 V2EX