I am reading documentation for DataStructures.jl, namely this page: Stack and Queue · DataStructures.jl and cannot figure out how to use iterate(s::Stack)
and Iterators.reverse(s::Stack{T})
?
I try this:
s = Stack{Int}()
for i ∈ 1:5
push!(s,i)
end
for i ∈ iterate(s)
println(i)
end
and getting something that I don’t understand:
5
(DataStructures.DequeBlock{Int64}(capa = 1024, front = 1, back = 5): [1, 2, 3, 4, 5], 4)
How to iterate properly?
You don’t need iterate
here:
julia> for i ∈ s
println(i)
end
5
4
3
2
1
julia> for i ∈ Iterators.reverse(s)
println(i)
end
1
2
3
4
5
for i ∈ Iterators.reverse(s)
println(i)
end
gives an error
MethodError: no method matching iterate(::Base.Iterators.Reverse{Stack{Int64}})
What version of DataStructures.jl are you using? It looks like support for Iterators.reverse
was added in version 0.18.4. You can find out what version you are running with ] st DataStructures
in the REPL.
2 Likes
It seems strange to me that Stack
would support Iterators.reverse
, one of the defining characteristic of a Stack
is only allowing access to the top element.
v0.17.20
, Julia 1.5.3 How to update DataStructures
to the latest in REPL? up DataStructures
does not update it.
Most likely, that means some other package is holding it back (by having it as a dependency, restricted to v0.17
). Can you try add DataStructures@0.18
?
2 Likes
Thanks! It works. First it gave me the error: ERROR: Unsatisfiable requirements detected for package Lasso
. I don’t need Lasso
for now, so I removed it, then add DataStructures@0.18
updated it to v0.18.9