V2EX = way to explore
V2EX 是一个关于分享和探索的地方
现在注册
已注册用户请  登录
rookiemaster
V2EX  ›  Swift

swiftui 中的语法糖疑问

  •  
  •   rookiemaster · 291 天前 · 1557 次点击
    这是一个创建于 291 天前的主题,其中的信息可能已经有所发展或是发生改变。
    VStack{
        Image(systemName: "globe")
        Text("👻").font(.largeTitle)
    }
    

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

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

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

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

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

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

    只写了 Content:View ...所以这个 swiftui 的文档真是晦涩难懂
    关于   ·   帮助文档   ·   博客   ·   API   ·   FAQ   ·   实用小工具   ·   999 人在线   最高记录 6679   ·     Select Language
    创意工作者们的社区
    World is powered by solitude
    VERSION: 3.9.8.5 · 20ms · UTC 20:58 · PVG 04:58 · LAX 12:58 · JFK 15:58
    Developed with CodeLauncher
    ♥ Do have faith in what you're doing.