Standard interface for programatic structure definition
Dieses Issue hat noch niemand übernommen.
Bewertung
- Schwierigkeit
- 5/5
- Geschätzter Aufwand
- Über eine Woche
- Anfängerfreundlichkeit
- 25/100
- Issue-Typ
- Feature
- Klarheit
- Muss geklärt werden
- Aktivitätsstatus
- Veraltet
- Tech-Stack
- julia
- Bereich
- developer-experience
Rechercherichtung
Das Issue nennt keine Dateien, Tests oder bestehenden Einstiegspunkte; beginne mit der Überprüfung der aktuellen StructTypes.jl API und der im Vorschlag aufgeführten verwandten Pakete. Für den Abschluss wäre ein vereinbarter Standard zur Definition von Strukturen erforderlich, einschließlich der einmaligen und inkrementellen Formen sowie aller StructTypes-bezogenen Erweiterungen.
Vom Indexierungsmodell aus dem Issue-Text verfasst.
Beschreibung
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:
- Vorherrschende Sprache
- Julia
- Sterne
- 86
- Forks
- 21
- PR-Merge-Kennzahlen
- Keine gemergten PRs in 30 T.
Entwicklungsumgebung
Dieses Projekt bietet weder Dev-Container noch Dockerfile noch Beitragsleitfaden – die Einrichtung liegt bei Ihnen. Beginnen Sie mit der README; die allgemeinen Schritte stehen in unserem Leitfaden für den ersten Beitrag.
Erste Schritte
- Lesen Sie das ganze Issue und danach den Beitragsleitfaden des Projekts.
- Schreiben Sie ins Issue, dass Sie es übernehmen — das erspart doppelte Arbeit.
- Forken Sie das Repository und arbeiten Sie in einem Branch.
- Öffnen Sie einen Pull Request, der die Issue-Nummer nennt.
Mehr aus JuliaData/StructTypes.jl
-
Schwierigkeit 4/5 3-5 Tage Anfängerfreundlichkeit 35/100
JuliaData/StructTypes.jl#104 ·
-
Schwierigkeit 2/5 1-3 Stunden Anfängerfreundlichkeit 45/100
JuliaData/StructTypes.jl#102 · 1 Kommentar ·
-
Register v1.11.0?Offen
Schwierigkeit 2/5 1-3 Stunden Anfängerfreundlichkeit 35/100
JuliaData/StructTypes.jl#98 · 2 Kommentare · 1 Reaktion ·
-
Schwierigkeit 3/5 1-2 Tage Anfängerfreundlichkeit 30/100
JuliaData/StructTypes.jl#96 · 1 Kommentar ·
-
`StructTypes.x` is not definedEvtl. vergeben @sunoru hat das vor 1124 Tagen übernommen. Offen
Schwierigkeit 4/5 3-5 Tage Anfängerfreundlichkeit 25/100
JuliaData/StructTypes.jl#92 · 3 Kommentare ·
Alle Issues in JuliaData/StructTypes.jl
Ähnliche Issues
-
Schwierigkeit 2/5 1-3 Stunden Anfängerfreundlichkeit 68/100
SciML/SciMLSensitivity.jl#1703 · 1 Kommentar ·
Maintainer antworten meist innerhalb von 1 Tag
-
Cannot set point coordinates with `Range`s (or arbitrary arrays) using `Makie.Resampler` in `heatmap`Evtl. vergeben Ein verknüpfter Pull Request ist offen oder bereits gemergt. Offenbug
Schwierigkeit 2/5 1-3 Stunden Anfängerfreundlichkeit 74/100
Maintainer antworten meist innerhalb von 2 Tagen
-
Document that `nullspace` returns orthonormalized vectorsEvtl. vergeben @thchr hat das heute übernommen. Offendocs
Schwierigkeit 1/5 Unter einer Stunde Anfängerfreundlichkeit 68/100
JuliaLang/LinearAlgebra.jl#1754 · 2 Kommentare · 1 Reaktion ·
Maintainer antworten meist innerhalb von 2 Tagen
-
documentation
Schwierigkeit 1/5 Unter einer Stunde Anfängerfreundlichkeit 66/100
-
Schwierigkeit 2/5 1-3 Stunden Anfängerfreundlichkeit 76/100
JuliaPy/CondaPkg.jl#232 ·