Not sure if I’m reading this problem really wrong, but fieldnames(myparams) gets you (:a, :b, :c, :d) if you need to iterate over the field names. Core.getfield can accept either integers or symbols to get to the fields:
julia> getfield.(Ref(myparams()), Tuple(1:4))
(0.03, 0.95, 0.970873786407767, 0.028499999999999998)
julia> fieldnames(myparams)
(:a, :b, :c, :d)
julia> getfield.(Ref(myparams()), fieldnames(myparams))
(0.03, 0.95, 0.970873786407767, 0.028499999999999998)
The Ref is to wrap the instance in a 1-element iterable to act as a scalar, myparams() isn’t iterable so broadcasting would’ve just failed.