My struct definition:
struct DiscreteField{T}
time::Vector{Float64}
data::Vector{T}
end
I would like to create an outer constructor:
function DiscreteField(data::Base.Iterators.Zip{Tuple{Vector{Float64},Vector{}}})
a = Float64[]
b = []
for (time, val) in data
push!(a, time)
push!(b, val)
end
return DiscreteField(a, b)
end
Then the initialization of object got error:
DiscreteField(data)
Error message:
MethodError: no method matching DiscreteField(::Base.Iterators.Zip{Tuple{Array{Float64,1},Array{Int64,1}}})
Closest candidates are:
DiscreteField() at In[8]:7
DiscreteField(!Matched::Array{Float64,1}, !Matched::Array{T,1}) where T at In[11]:4
DiscreteField(!Matched::Base.Iterators.Zip{Tuple{Array{Float64,1},Array{T,1} where T}}) at In[15]:2
Stacktrace:
[1] top-level scope at In[17]:100:
Why does this happens?
I have the other outer constructor which works well:
function DiscreteField{T}(data::Base.Iterators.Zip{Tuple{Vector{Float64}, Vector{T}}}) where {T}
a = Float64[]
b = []
for (time, val) in data
push!(a, time)
push!(b, val)
end
return DiscreteField(a, b)
end
Would you mind telling me what was the error in the previous constructor?