rookiemaster
V2EX  ›  Swift

swiftui 中的语法糖疑问

  •  
  •   rookiemaster · Mar 7, 2024 · 2320 views
    This topic created in 821 days ago, the information mentioned may be changed or developed.
    VStack{
        Image(systemName: "globe")
        Text("👻").font(.largeTitle)
    }
    

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

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

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

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

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

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

    只写了 Content:View ...所以这个 swiftui 的文档真是晦涩难懂
    About   ·   Help   ·   Advertise   ·   Blog   ·   API   ·   FAQ   ·   Solana   ·   876 Online   Highest 6679   ·     Select Language
    创意工作者们的社区
    World is powered by solitude
    VERSION: 3.9.8.5 · 42ms · UTC 21:59 · PVG 05:59 · LAX 14:59 · JFK 17:59
    ♥ Do have faith in what you're doing.