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?