.. broadcast object property

Indeed StructArrays.jl works well here:

julia> using StructArrays

julia> X = [
           (;a=(x=1,y=1),b=()),
           (;a=(x=2,y=3),b=()),
       ]
2-element Vector{@NamedTuple{a::@NamedTuple{x::Int64, y::Int64}, b::Tuple{}}}:
 (a = (x = 1, y = 1), b = ())
 (a = (x = 2, y = 3), b = ())

julia> Y = StructArray(X, unwrap=t -> t <: NamedTuple)
2-element StructArray(StructArray(::Vector{Int64}, ::Vector{Int64}), ::Vector{Tuple{}}) with eltype @NamedTuple{a::@NamedTuple{x::Int64, y::Int64}, b::Tuple{}}:
 (a = (x = 1, y = 1), b = ())
 (a = (x = 2, y = 3), b = ())

julia> Y[1]
(a = (x = 1, y = 1), b = ())

julia> Y.a.x
2-element Vector{Int64}:
 1
 2
5 Likes