# SwiftUI @ViewBuilder Result is a TupleView, How is Apple Using It And Able to Avoid Turning Things Into AnyVIew?

**URL:** <https://forums.swift.org/t/swiftui-viewbuilder-result-is-a-tupleview-how-is-apple-using-it-and-able-to-avoid-turning-things-into-anyview/28181>\
**Category:** Using Swift\
**Tags:** off-topic\
**Created:** [August 23, 2019, 7:22pm UTC](https://forums.swift.org/t/swiftui-viewbuilder-result-is-a-tupleview-how-is-apple-using-it-and-able-to-avoid-turning-things-into-anyview/28181 "2019-08-23T19:22:05Z")\
**Posts on this page:** 1\
**Showing post:** 2

<div class="post-metadata">

**Author:** ![artyom-stv](https://sea2.discourse-cdn.com/swift/user_avatar/forums.swift.org/artyom-stv/32/9380_2.png) [@artyom-stv](https://forums.swift.org/u/artyom-stv)\
**Post date:** [October 27, 2019, 1:54am UTC](https://forums.swift.org/t/swiftui-viewbuilder-result-is-a-tupleview-how-is-apple-using-it-and-able-to-avoid-turning-things-into-anyview/28181/2 "2019-10-27T01:54:46Z")

</div>

The internal code in SwiftUI framework may look like this:

```swift
protocol Visitor {
    func visit<T>(_ element: T)
}

public struct TupleView<T> {
    public var value: T

    @inlinable public init(_ value: T) {
        self.value = value
    }

    func accept<VisitorType: Visitor>(visitor: VisitorType) {
        // No instructions
        // or
        // fatalError()
    }

    func accept<VisitorType: Visitor, C0, C1>(visitor: VisitorType) where T == (C0, C1) {
        visitor.visit(value.0)
        visitor.visit(value.1)
    }

    func accept<VisitorType: Visitor, C0, C1, C2>(visitor: VisitorType) where T == (C0, C1, C2) {
        visitor.visit(value.0)
        visitor.visit(value.1)
        visitor.visit(value.2)
    }

    // ...
}

```

Sample usage:

```swift
// Sample struct-based visitor which just prints elements
struct PrintVisitor: Visitor {
    func visit<T>(_ element: T) {
        print("element: \(element)")
    }
}

// Sample class-based visitor which aggregates some information about elements
class MaxSizeVisitor: Visitor {
    var size: CGSize = .zero

    func visit<T>(_ element: T) {
        let elementSize = size(for: element)

        size = CGSize(width: max(size.width, elementSize.width),
                      height: max(size.height, elementSize.height))
    }

    func size<T>(for element: T) -> CGSize {
        <#some code#>
    }
}

let view = TupleView((<#view0#>, <#view1#>, <#view2#>))

view.accept(visitor: PrintVisitor())

let maxSizeVisitor = MaxSizeVisitor()
view.accept(visitor: maxSizeVisitor)
print("size: \(maxSizeVisitor.size)")

```

---

_[View the full topic](https://forums.swift.org/t/swiftui-viewbuilder-result-is-a-tupleview-how-is-apple-using-it-and-able-to-avoid-turning-things-into-anyview/28181)._
