Allow columns with variable getindex return types #84
Add this suggestion to a batch that can be applied as a single commit.
This suggestion is invalid because no changes were made to the code.
Suggestions cannot be applied while the pull request is closed.
Suggestions cannot be applied while viewing a subset of changes.
Only one suggestion per line can be applied in a batch.
Add this suggestion to a batch that can be applied as a single commit.
Applying suggestions on deleted lines is not supported.
You must change the existing code in this line in order to create a valid suggestion.
Outdated suggestions cannot be applied.
This suggestion has been applied or marked resolved.
Suggestions cannot be applied from pending reviews.
Suggestions cannot be applied on multi-line comments.
Suggestions cannot be applied while the pull request is queued to merge.
Suggestion cannot be applied right now. Please check back later.
There's an interesting new package floating about that has been quite useful: https://github.com/oschulz/ArraysOfArrays.jl. The gist is that it allows viewing an M+N dimensional array as an M-dimensional array of N-dimensional arrays. To achieve this,
getindex
returns a view of the underlying data, which has a variable (but stable) return type. StructArrays relies on a constant return type increateinstance
. This leads to some odd behavior:This is because:
So in
createinstance
a call toT(args)
, corresponding toNamedTuple{(:x,),Tuple{Array{Float64,2}}(s.x[1])
is made, buttypeof(s.x[1])<:SubArray
so a copy of the data is made.This PR fixes the above issue but introduces a new one: now the inferred return type for getindex(::StructArray, ...) is
Any
.-Colin