Standard interface for programatic structure definition
Ninguém assumiu esta issue ainda.
Avaliação
- Dificuldade
- 5/5
- Tempo estimado
- Mais de uma semana
- Facilidade para iniciantes
- 25/100
- Tipo de issue
- Funcionalidade
- Clareza
- Precisa de esclarecimento
- Status de atividade
- Estagnada
- Stack de tecnologia
- julia
- Domínio
- developer-experience
Direção de pesquisa
A issue não nomeia arquivos, testes nem pontos de entrada existentes; comece revisando a API atual de StructTypes.jl e os pacotes relacionados listados na proposta. Para considerar isso concluído, seria necessário um padrão acordado para definir estruturas, incluindo as formas de uma única vez e incrementais, além de quaisquer extensões relacionadas a StructTypes.
Escrita pelo modelo de indexação a partir do texto da issue.
Descrição
I think it would be useful to have a standard interface for programmatic structure. Here I give the basic structure, but StructTypes related features can be added to the functions.
1-time function
functions API:
struct_define(struct_name::Symbol; fields_names::Vector{Symbol}, fields_types::Vector{Union{DataTypes, Symbol, Missing})
Example
struct_define(:Foo, [:a, :b, :c], [:Int64, missing, :String])
over-time method
functions API:
struct_define(struct_data::StructConstructor) # defines a struct based on the data
mutable struct StructConstructor
name::Symbol
fields_names::Vector{Symbol}
fields_types::Vector{Union{DataType, Symbol, Missing}}
end
# a constructor for when we know the name and number of fields:
function StructConstructor(nfields::Integer)
fields_names = Vector{Symbol}(undef, nfields)
fields_names = Vector{Union{DataType, Symbol, Missing}}(undef, nfields)
return StructConstructor(:TempName, fields_names, fields_names)
end
function StructConstructor(name::Symbol, nfields::Integer)
fields_names = Vector{Symbol}(undef, nfields)
fields_names = Vector{Union{DataType, Symbol, Missing}}(undef, nfields)
return StructConstructor(name, fields_names, fields_names)
end
Example
mystruct_data = StructConstructor()
mystruct_data = mystruct_data.name = :Foo # adds name
names = [:a, :b, :c]
types = [:Int64, missing, :String]
for (name, type) in zip(types, names)
push!(mystruct_data.fields_names, name)
push!(mystruct_data.fields_types, type)
end
struct_define(mystruct_data)
mystruct_data = StructConstructor(:Foo, 3)
names = [:a, :b, :c]
types = [:Int64, missing, :String]
for ifield = 1:3
mystruct_data.fields_names[ifield] = names[ifield]
mystruct_data.fields_types[ifield] = types[ifield]
end
struct_define(mystruct_data)
We can more feature such as
- the default value for the fields
- functions that check the values during the definition of an instance or updating
Related packages:
- Linguagem predominante
- Julia
- Estrelas
- 86
- Forks
- 22
- Merge médio
- 4d 42min
- PRs com merge (30d)
- 6
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 3/5 1-2 dias Facilidade para iniciantes 30/100
JuliaData/StructTypes.jl#96 · 1 comentário ·
-
StructTypes encourage piracyAberta
Dificuldade 5/5 Mais de uma semana Facilidade para iniciantes 25/100
JuliaData/StructTypes.jl#87 · 5 comentários ·
-
Dificuldade 5/5 Mais de uma semana Facilidade para iniciantes 25/100
JuliaData/StructTypes.jl#76 ·
-
Default to OrderedStruct for NamedTuples?Talvez livre de novo Um pull request para esta issue foi fechado sem ser mesclado. Aberta
Dificuldade 5/5 Mais de uma semana Facilidade para iniciantes 25/100
JuliaData/StructTypes.jl#68 · 3 comentários ·
Todas as issues de JuliaData/StructTypes.jl
Issues semelhantes
-
`ShallowWaterModel` allocates ~9 KiB per grid point per RK3 stage on the CPUTalvez já em andamento @ali-ramadhan assumiu hoje. Abertaperformance 🏍️
Dificuldade 2/5 1-3 horas Facilidade para iniciantes 62/100
CliMA/Oceananigans.jl#6421 · 1 reação ·
Mantenedores costumam responder em até 1 dia
-
Dificuldade 2/5 1-3 horas Facilidade para iniciantes 62/100
NCAR/musica#1118 · 1 comentário · 1 reação ·
Mantenedores costumam responder em até 1 dia
-
`AMSGrad` state starts at `epsilon` instead of zero, so zero gradients move parameters and small gradients are dampedTalvez já em andamento @parth-patel010 assumiu hoje. Aberta
Dificuldade 2/5 1-3 horas Facilidade para iniciantes 72/100
FluxML/Optimisers.jl#247 · 1 comentário ·
-
README should say that row and column order must matchTalvez já em andamento @SAUMYARSH assumiu hoje. Aberta
Dificuldade 1/5 Menos de uma hora Facilidade para iniciantes 84/100
-
Dificuldade 1/5 Menos de uma hora Facilidade para iniciantes 82/100
OpenFUSIONToolkit/GPEC#644 ·
Mantenedores costumam responder em até 3 dias