Futher Utilities
Iterator with known eltype
MissingStrategies.typediter
— Functiontypediter(::Type{ET},iter::IT)
TypedIterator{IT,ET}
Construct a thin wrapper around iterator IT
returning eltype ET
.
Examples
using SimpleTraits
x = [1,2,missing]
@traitfn fm(x::::IsEltypeSuperOfMissing) = count(ismissing.(x))
gen = (2*xi for xi in x)
eltype(gen) == Any
#fm(gen) # MethodError
gent = typediter(eltype(x), 2*xi for xi in x)
eltype(gent) == eltype(x)
fm(gent) == 1
Return macro
MissingStrategies.@returnmissing
— Macro@returnmissing(expr)
Return missing
, if expr
evaluates to missing
.
Example
finner(x::Real) = x*2
f1(x) = finner(x)
f2(x) = finner(@returnmissing(x))
f1(3) == f2(3) == 2*3
# error: f1(missing)
ismissing(f2(missing))