Iterators: Difference between revisions

Content added Content deleted
m (→‎{{header|Raku}}: sigh, more typos)
(julia example)
Line 81: Line 81:
Purple, Yellow, Orange
Purple, Yellow, Orange
</pre>
</pre>


=={{header|Julia}}==
{{trans|C++}}
Julia has a iteration interface. Any Julia type which implements the `iterate` function is
considered an iterable. In base Julia, this includes any array type or collection, including
any subclass of AbstractRange, UnitRange, Tuple, Number, AbstractArray, BitSet, IdDict, Dict,
WeakKeyDict, EachLine, AbstractString, Set, Pair, and NamedTuple. In particular, Julia has an
extensive set of functions which act of lists and vectors. Julia's Iteration utilities can
implement the C++ example:
<lang julia>function PrintContainer(iterator)
iter = Iterators.Stateful(iterator)
foreach(x -> print(x, ", "), Iterators.take(iter, length(iter) -1))
foreach(println, Iterators.take(iter, 1))
end

function FirstFourthFifth(iterator)
iter = Iterators.Stateful(iterator)
foreach(x -> print(x, ", "), Iterators.take(iter, 1))
popfirst!(iter); popfirst!(iter)
foreach(x -> print(x, ", "), Iterators.take(iter, 1))
foreach(println, Iterators.take(iter, 1))
end

const days = ["Sunday", "Monday", "Tuesday", "Wednesday", "Thursday", "Friday", "Saturday"]
const colors = ["Red", "Orange", "Yellow", "Green", "Blue", "Purple"]

println("All elements:")
PrintContainer(days)
PrintContainer(colors)

println("\nFirst, fourth, and fifth elements:")
FirstFourthFifth(days)
FirstFourthFifth(colors)

println("\nReverse first, fourth, and fifth elements:")
FirstFourthFifth(Iterators.reverse(days))
FirstFourthFifth(Iterators.reverse(colors))
<lang>
<pre>
All elements:
Sunday, Monday, Tuesday, Wednesday, Thursday, Friday, Saturday
Red, Orange, Yellow, Green, Blue, Purple

First, fourth, and fifth elements:
Sunday, Wednesday, Thursday
Red, Green, Blue

Reverse first, fourth, and fifth elements:
Saturday, Wednesday, Tuesday
Purple, Yellow, Orange
</pre>



=={{header|Phix}}==
=={{header|Phix}}==