JuliaDynamics/Agents.jl

[FR] make the `@agent` macro define pretty printing as well

Opened this issue · 1 comments

Currently we have:

@agent struct SchellingAgent(GridAgent{2})
    mood::Bool # whether the agent is happy in its position
    group::Int # The group of the agent, determines mood as it interacts with neighbors
end

a = SchellingAgent(1, (1,1), true, 1)

which prints

SchellingAgent(1, (1, 1), true, 1)

wouldn't it be nice to have pretty printing by default, so that each field is printed in 1 line, along with its name, its type, and then = value ? I am sure this shouldn't be too difficult to do...?

Actually, we don't this at the macro level. We can define Base.show(..., a::AbstractAgent) and just loop over fields and print them. In this function we can also handle properly the @multiagent created types.