Amro  
                
                  
                    September 2, 2021, 11:25pm
                   
                  1 
               
             
            
              I have this structure:
julia> Base.@kwdef mutable struct Vsines
           instancename::String="Def"
           value::Float64=0.0
       end
and I want to create a vector of “Vsines” instances (name of this vector is “s”), in which I dont know initially the size of this vector, however, it grows  in iterative manner when (event = true). So, I wrote something like below, but I have an error. Could you please correct my way?
julia> i=0; event = true;
julia> if event == true
          i +=1;
          s[i]=Vsines()
       end
ERROR: UndefVarError: s not defined
Stacktrace:
 [1] top-level scope
   @ REPL[3]:3
 
            
              
            
           
          
            
              
                lmiq  
              
                  
                    September 2, 2021, 11:41pm
                   
                  2 
               
             
            
              s=Vsines[]  #initialize
push!(s,Vsines())  # push new element
 
            
              1 Like 
            
            
           
          
            
              
                Amro  
              
                  
                    September 2, 2021, 11:48pm
                   
                  3 
               
             
            
              Can we assign specific value meanwhile we using push? such as:
Base.@kwdef mutable struct Vsines
           instancename::String="Def"
           value::Float64=0.0
       end
s=Vsines[]
push!(s.value,Vsines(,0.0))
 
            
              
            
           
          
            
              
                jling  
              
                  
                    September 2, 2021, 11:59pm
                   
                  4 
               
             
            
              
s is a vector of Vsines, it doesn’t have a field called value. Just push into s
             
            
              1 Like 
            
            
           
          
            
              
                lmiq  
              
                  
                    September 3, 2021, 12:01am
                   
                  5 
               
             
            
              push!(s,Vsines("name",0.0))
 
            
              1 Like 
            
            
           
          
            
              
                Amro  
              
                  
                    September 3, 2021,  1:52pm
                   
                  8 
               
             
            
              Could you please let me know how to solve this problem?
ulia> Base.@kwdef mutable struct Vsines
           instancename::Array{String,3} = ["NN","NN","NN"]
           value::Array{Int128,3} = [0,0,0]
       end
Vsines
julia> s=Vsines[]
Vsines[]
julia> push!(s,Vsines())
ERROR: MethodError: no method matching Array{String, 3}(::Vector{String})
Closest candidates are:
  Array{T, N}(::AbstractArray{S, N}) where {T, N, S} at array.jl:540      
  Array{T, N}(::BitArray{N}) where {T, N} at bitarray.jl:494
  Array{T, N}(::Core.Compiler.BitArray{N}) where {T, N} at bitarray.jl:494
  ...
Stacktrace:
 [1] convert(#unused#::Type{Array{String, 3}}, a::Vector{String})
   @ Base .\array.jl:532
 [2] Vsines(instancename::Vector{String}, value::Vector{Int64})  
   @ Main .\REPL[2]:2
 [3] Vsines(; instancename::Vector{String}, value::Vector{Int64})
   @ Main .\util.jl:450
 [4] Vsines()
   @ Main .\util.jl:450
 [5] top-level scope
   @ REPL[4]:1
 
            
              
            
           
          
            
              
                lmiq  
              
                  
                    September 3, 2021,  1:55pm
                   
                  9 
               
             
            
              
The 3 is the dimension of the array, not the number of elements. What you there is a Vector, or, equivalently, an array of dimension 1:
julia> Base.@kwdef mutable struct Vsines
                  instancename::Vector{String} = ["NN","NN","NN"]
                  value::Vector{Int128} = [0,0,0]
              end
Vsines
julia> s=Vsines[]
Vsines[]
julia> push!(s,Vsines())
1-element Vector{Vsines}:
 Vsines(["NN", "NN", "NN"], Int128[0, 0, 0])
 
            
              2 Likes 
            
            
           
          
            
              
                Amro  
              
                  
                    September 3, 2021,  1:59pm
                   
                  10 
               
             
            
              
 lmiq:
 
Base.@kwdef mutable struct Vsines
                  instancename::Vector{String} = ["NN","NN","NN"]
                  value::Vector{Int128} = [0,0,0]
              end
 
 
Thank you very much for your experience and explanation!
             
            
              1 Like