Julian way of expressing a buffer swap

mutable struct Workspace
    frontBuffer::Vector{Int64}
    backBuffer::Vector{Int64}
end

function Workspace(s::Int64)
    return Workspace(zeros(Int64, s), zeros(Int64, s))
end

function swapbuffers!(w::Workspace)
    w.backBuffer, w.frontBuffer = w.frontBuffer, w.backBuffer
    return w
end

Now:

julia> w = Workspace(5)
Workspace([0, 0, 0, 0, 0], [0, 0, 0, 0, 0])

julia> w.frontBuffer[1] = 1
1

julia> w
Workspace([1, 0, 0, 0, 0], [0, 0, 0, 0, 0])

julia> r = swapbuffers!(w)
Workspace([0, 0, 0, 0, 0], [1, 0, 0, 0, 0])

julia> w
Workspace([0, 0, 0, 0, 0], [1, 0, 0, 0, 0])
1 Like