Standard interface for programatic structure definition
Nadie ha tomado este issue todavía.
Evaluación
- Dificultad
- 5/5
- Tiempo estimado
- Más de una semana
- Aptitud para principiantes
- 25/100
- Tipo de issue
- Nueva funcionalidad
- Claridad
- Necesita aclaración
- Estado de actividad
- Estancado
- Stack tecnológico
- julia
- Área
- developer-experience
Línea de trabajo
El issue no nombra archivos, pruebas ni puntos de entrada existentes; comienza revisando la API actual de StructTypes.jl y los paquetes relacionados enumerados en la propuesta. Para darlo por terminado, sería necesario acordar un estándar para definir estructuras, incluidas las formas de una sola vez e incrementales y cualquier extensión relacionada con StructTypes.
Escrito por el modelo de indexación a partir del texto del issue.
Descripción
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:
- Lenguaje dominante
- Julia
- Estrellas
- 86
- Forks
- 21
- Métricas de merge de PR
- Sin PR fusionados en 30 d
Preparar el entorno
Este proyecto no incluye contenedor de desarrollo, Dockerfile ni guía de contribución, así que la configuración corre por tu cuenta: empieza por su README y consulta nuestra guía para la primera contribución para los pasos generales.
Primeros pasos
- Lee el issue completo y luego la guía de contribución del proyecto.
- Comenta en el issue que vas a ocuparte — evita que dos personas hagan lo mismo.
- Haz un fork del repositorio y trabaja en una rama.
- Abre un pull request que haga referencia al número del issue.
Más de JuliaData/StructTypes.jl
-
Dificultad 4/5 3-5 días Aptitud para principiantes 35/100
JuliaData/StructTypes.jl#104 ·
-
Dificultad 2/5 1-3 horas Aptitud para principiantes 45/100
JuliaData/StructTypes.jl#102 · 1 comentario ·
-
Register v1.11.0?Abierto
Dificultad 2/5 1-3 horas Aptitud para principiantes 35/100
JuliaData/StructTypes.jl#98 · 2 comentarios · 1 reacción ·
-
Dificultad 3/5 1-2 días Aptitud para principiantes 30/100
JuliaData/StructTypes.jl#96 · 1 comentario ·
-
`StructTypes.x` is not definedPosiblemente ocupada @sunoru la tomó hace 1123 días. Abierto
Dificultad 4/5 3-5 días Aptitud para principiantes 25/100
JuliaData/StructTypes.jl#92 · 3 comentarios ·
Todos los issues de JuliaData/StructTypes.jl
Issues similares
-
bug
Dificultad 2/5 1-3 horas Aptitud para principiantes 74/100
Los mantenedores suelen responder en 2 días
-
documentation
Dificultad 1/5 Menos de una hora Aptitud para principiantes 66/100
-
Dificultad 2/5 1-3 horas Aptitud para principiantes 76/100
JuliaPy/CondaPkg.jl#232 ·
-
bug
Dificultad 2/5 1-3 horas Aptitud para principiantes 76/100
SciML/PETScDiffEq.jl#196 ·
Los mantenedores suelen responder en 1 día
-
Two jump tests solve a different problem than the one they buildPosiblemente ocupada Un pull request vinculado a esta issue está abierto o ya se fusionó. Abierto
Dificultad 1/5 1-3 horas Aptitud para principiantes 84/100
SciML/Catalyst.jl#1571 ·
Los mantenedores suelen responder en 1 día