Combining abstract types and parametric types?
Ninguém assumiu esta issue ainda.
Avaliação
- Dificuldade
- 5/5
- Tempo estimado
- Mais de uma semana
- Facilidade para iniciantes
- 25/100
Direção de pesquisa
Comece revisando os entry points existentes StructTypes.StructType, subtypekey e subtypes descritos na issue e, em seguida, compare-os com a API parametrickey proposta. Determine como os valores dos parâmetros de tipo devem ser representados e reconstruídos, incluindo a interação com subtipos abstratos. A tarefa estará concluída quando o comportamento e a API estiverem especificados com clareza suficiente para orientar uma implementação e seus testes.
Escrita pelo modelo de indexação a partir do texto da issue.
Descrição
Let's say I have a type hierarchy like this:
abstract type Parent end
mutable struct Child1 <: Parent
type # Set to 'child1'
end
mutable struct Child2{N<:Integer} <: Parent
type # Set to 'child2'
i::N
end
StructTypes.StructType(::Type{Parent}) = StructTypes.AbstractType()
StructTypes.StructType(::Type{Child1}) = StructTypes.Mutable()
StructTypes.StructType(::Type{<:Child2}) = StructTypes.Mutable()
StructTypes.subtypekey(::Type{Parent}) = :type
StructTypes.subtypes(::Type{Parent}) = (child1=Child1, child2=Child2)
Currently, afaik, there is no mechanism for StructTypes to serialize/deserialize the value of N, like how it can write the type key for each child.
Current workarounds I can think of:
- Pick a unique
typename for each concrete version ofChild2{N}you expect to be possible:(child1=Child1, child2U8=Child2{UInt8}, child2I32=Child2{Int32}, ...) - Use
UnorderedStructorOrderedStructinstead ofMutable, and let the type parameter be inferred by the constructor.
Would it be feasible to support deserializing type parameters in the same way as the type itself? For example:
struct Child2{N<:Integer} <: Parent
type # Set to 'child2'
int_type::Type # Set to string(N)
i::N
end
StructTypes.parametrickey(::Type{<:Child2}, ::Val{1}) = :int_type
- Linguagem predominante
- Julia
- Estrelas
- 86
- Forks
- 21
- Métricas de merge de PRs
- Nenhum PR com merge em 30d
Preparar o ambiente
Este projeto não oferece contêiner de desenvolvimento, Dockerfile nem guia de contribuição, então a configuração fica por sua conta: comece pelo README e veja nosso guia da primeira contribuição para os passos gerais.
Primeiros passos
- Leia a issue inteira e depois o guia de contribuição do projeto.
- Comente na issue dizendo que vai assumir — evita que duas pessoas façam o mesmo trabalho.
- Faça um fork do repositório e trabalhe em uma branch.
- Abra um pull request que referencie o número da issue.
Mais de JuliaData/StructTypes.jl
-
Dificuldade 4/5 3-5 dias Facilidade para iniciantes 35/100
JuliaData/StructTypes.jl#104 ·
-
Dificuldade 2/5 1-3 horas Facilidade para iniciantes 45/100
JuliaData/StructTypes.jl#102 · 1 comentário ·
-
Register v1.11.0?Aberta
Dificuldade 2/5 1-3 horas Facilidade para iniciantes 35/100
JuliaData/StructTypes.jl#98 · 2 comentários · 1 reação ·
-
Dificuldade 3/5 1-2 dias Facilidade para iniciantes 30/100
JuliaData/StructTypes.jl#96 · 1 comentário ·
-
`StructTypes.x` is not definedTalvez já em andamento @sunoru assumiu há 1125 dias. Aberta
Dificuldade 4/5 3-5 dias Facilidade para iniciantes 25/100
JuliaData/StructTypes.jl#92 · 3 comentários ·
Todas as issues de JuliaData/StructTypes.jl
Issues semelhantes
-
documentation
Dificuldade 2/5 1-3 horas Facilidade para iniciantes 62/100
Mantenedores costumam responder em até 1 dia
-
Dificuldade 2/5 Menos de uma hora Facilidade para iniciantes 78/100
Mantenedores costumam responder em até 1 dia
-
Dificuldade 2/5 1-3 horas Facilidade para iniciantes 62/100
CliMA/ClimaAtmos.jl#4891 · 1 comentário ·
Mantenedores costumam responder em até 1 dia
-
tagbot-manual
Dificuldade 1/5 Menos de uma hora Facilidade para iniciantes 75/100
tshort/StaticCompiler.jl#191 ·
-
Dificuldade 2/5 1-3 horas Facilidade para iniciantes 68/100
SciML/SciMLSensitivity.jl#1703 · 1 comentário ·
Mantenedores costumam responder em até 1 dia