Skip to content

Commit 6326604

Browse files
committed
works
1 parent e7b5999 commit 6326604

File tree

1 file changed

+14
-8
lines changed

1 file changed

+14
-8
lines changed

src/componentarray.jl

Lines changed: 14 additions & 8 deletions
Original file line numberDiff line numberDiff line change
@@ -360,14 +360,20 @@ julia> merge(c2,c1)
360360
ComponentVector{Float64}(a = 1.2, h = 4.0, b = 2.3)
361361
```
362362
"""
363-
function Base.merge(cvec1::ComponentVector{T1}, cvec2::ComponentVector{T2}) where {T1, T2}
364-
typed_dict = ComponentVector{promote_type(T1, T2)}(cvec1)
365-
for key in valkeys(cvec2)
366-
keyname = getval(key)
367-
val = cvec2[key]
368-
typed_dict = ComponentArray(typed_dict; keyname=>val)
363+
function Base.merge(ca::ComponentVector{T}, ca2::ComponentVector{T}) where T
364+
ax = getaxes(ca)
365+
ax2 = getaxes(ca2)
366+
vks = valkeys(ax[1])
367+
vks2 = valkeys(ax2[1])
368+
_p = Vector{T}()
369+
sizehint!(_p, length(c1) + length(ca2))
370+
for vk in vks
371+
if vk in vks2
372+
_p = vcat(_p, ca2[vk])
373+
else
374+
_p = vcat(_p, ca[vk])
375+
end
369376
end
370-
typed_dict
377+
ComponentArray(_p, merged_ax)
371378
end
372-
373379
Base.merge(a::ComponentVector, b::ComponentVector, cs::ComponentVector) = merge(merge(a,b), cs...)

0 commit comments

Comments
 (0)