VStack{
Image(systemName: "globe")
Text("👻").font(.largeTitle)
}
上面是一段 swiftui 代码,它能创建一个垂直排列的 view ,里面的闭包是作为 VStack.init 中 content 的参数,查看源码可知 content 的类型是()->Content 。 我的疑问是
Image(systemName: "globe")
Text("👻").font(.largeTitle)
是什么语法,他为什么能返回一个 Content ,我所了解的是要是只有一行代码的话才可以忽略掉 return ,这里不是有两行嘛,求解答。
1
XiaoXiaoMagician 289 天前
这段代码之所以不需要 return 关键字,即使它包含了两行代码,是因为 SwiftUI 的视图构建器( ViewBuilder )特性。视图构建器允许你在它的闭包中包含多个视图声明,而不需要显式地返回一个视图。在幕后,视图构建器将这些视图封装成一个组合视图,这通常是通过返回某种形式的 Group 视图来实现的。
在普通的 Swift 函数中,如果函数体包含多行代码,你确实需要使用 return 来返回一个值。但是在 SwiftUI 中,由于视图构建器的特性,这种限制被放宽了,你可以在视图构建器的闭包中包含多个视图组件,而不需要显式地返回它们。 这种设计让 SwiftUI 的代码更加简洁和易读,使得开发者能够以一种接近于声明式布局的方式来构建用户界面。 |
2
sunshinev 286 天前
好问题,我看了文档也没看明白
只写了 Content:View ...所以这个 swiftui 的文档真是晦涩难懂 |