If I have a “large” struct like

struct Vertex
{
    let x:Double, y:Double
    var r:Int, g:Int, b:Int
    let s:Double, t:Double
    var selected:Bool
}

and I want to pass it to a function without modifying it like

func taxicab_distance(_ v1:Vertex, _ v2:Vertex) -> Double
{
    return v2.x - v1.x + v2.y - v1.y
}

Will the entire struct Vertex get copied and pushed onto the stack, or will
only the relevant members be passed to the function?

In other words, does the compiler know to optimize this call down to

func taxicab_distance(v2x:Double, v1x:Double, v2y:Double, v1y:Double) ->
Double
{
    return v2x - v1x + v2y - v1y
}

?
_______________________________________________
swift-users mailing list
swift-users@swift.org
https://lists.swift.org/mailman/listinfo/swift-users

Reply via email to