On Swift 4.2, underestimatedCount
implementation seems to be missing on a few Collection/Sequence
function return-values:
let collection = Array(0..<8)
let sequence = stride(from: 0, to: 8, by: 1)
collection.underestimatedCount // 8
sequence.underestimatedCount // 8
// Sequence dropFirst
sequence.dropFirst(2).underestimatedCount // 0
// Sequence prefix, lazy or otherwise
sequence.lazy.prefix(2).underestimatedCount // 0
sequence.prefix(2).underestimatedCount // 0
// Sequence/Collection enumerated
collection.enumerated().underestimatedCount // 0
sequence.enumerated().underestimatedCount // 0
// Sequence/Collection zip
zip(collection, collection).underestimatedCount // 0
zip(sequence, sequence).underestimatedCount // 0
zip
has already been discussed here
P.S.
Interestingly, while Sequence
's prefix
and dropFirst
doesn't have the implementation, suffix
and dropLast
have them.
sequence.dropLast(2).underestimatedCount // 6
sequence.lazy.suffix(2).underestimatedCount // 2
sequence.suffix(2).underestimatedCount // 2