Skip to content

Commit 30c673f

Browse files
authored
Add docs to collect_structarray (JuliaArrays#62)
1 parent d93e4b2 commit 30c673f

File tree

1 file changed

+14
-5
lines changed

1 file changed

+14
-5
lines changed

src/collect.jl

+14-5
Original file line numberDiff line numberDiff line change
@@ -25,22 +25,31 @@ _reshape(v, itr) = _reshape(v, itr, Base.IteratorSize(itr))
2525
_reshape(v, itr, ::Base.HasShape) = reshape(v, axes(itr))
2626
_reshape(v, itr, ::Union{Base.HasLength, Base.SizeUnknown}) = v
2727

28-
function collect_structarray(itr; initializer = default_initializer)
29-
fr = iterate(itr)
30-
fr === nothing ? collect_empty_structarray(itr; initializer = initializer) : collect_structarray(itr, fr; initializer = initializer)
31-
end
28+
"""
29+
`collect_structarray(itr, fr=iterate(itr); initializer = default_initializer)`
30+
31+
Collects `itr` into a `StructArray`. The user can optionally pass a `initializer`, that is to say
32+
a function `(S, d) -> v` that associates to a type and a size an array of eltype `S`
33+
and size `d`. By default `initializer` returns a `StructArray` of `Array` but custom array types
34+
may be used. `fr` represents the moment in the iteration of `itr` from which to start collecting.
35+
"""
36+
collect_structarray(itr; initializer = default_initializer) =
37+
collect_structarray(itr, iterate(itr); initializer = initializer)
3238

3339
collect_structarray(itr, fr; initializer = default_initializer) =
3440
collect_structarray(itr, fr, Base.IteratorSize(itr); initializer = initializer)
3541

42+
collect_structarray(itr, ::Nothing; initializer = default_initializer) =
43+
collect_empty_structarray(itr; initializer = initializer)
44+
3645
function collect_empty_structarray(itr::T; initializer = default_initializer) where {T}
3746
S = Core.Compiler.return_type(first, Tuple{T})
3847
res = initializer(S, (0,))
3948
_reshape(res, itr)
4049
end
4150

4251
function collect_structarray(itr, elem, sz::Union{Base.HasShape, Base.HasLength};
43-
initializer = default_initializer)
52+
initializer = default_initializer)
4453
el, i = elem
4554
S = typeof(el)
4655
dest = initializer(S, (length(itr),))

0 commit comments

Comments
 (0)