This wasn’t the default behaviour because `enumerated()` is a method for the 
`Sequence` protocol, which doesn’t have any indices. Integers are the only 
thing that make sense there. But I agree that this should have been part of the 
standard library already.

> +1.One of those things where you wonder why this wasn't the default behavior.
> 
> ~Robert Widmann
> 
> 2016/09/28 14:23、Nevin Brackett-Rozinsky via 
> swift-evolution<swift-evolution@swift.org(mailto:swift-evolution@swift.org)>のメッセージ:
> 
> > +1, I have been mildly surprised that this was not already present.
> > 
> > My workaround heretofore has been:
> > 
> > for idx in abc.indices {
> > let val = abc[i]
> > // do something with idx and val
> > }
> > 
> > Nevin
> > 
> > 
> > On Wed, Sep 28, 2016 at 1:55 PM, Erica Sadun via 
> > swift-evolution<swift-evolution@swift.org(mailto:swift-evolution@swift.org)>wrote:
> > > Gist here:https://gist.github.com/erica/2b2d92e6db787d001c689d3e37a7c3f2
> > > 
> > > Introducingindexed()collections
> > > Proposal: TBD
> > > Author:Erica Sadun(https://github.com/erica),Nate 
> > > Cook(https://github.com/natecook1000),Jacob 
> > > Bandes-Storch(https://github.com/jtbandes),Kevin 
> > > Ballard(https://github.com/kballard)
> > > Status: TBD
> > > Review manager: TBD
> > > 
> > > Introduction
> > > 
> > > This proposal introducesindexed()to the standard library, a method on 
> > > collections that returns an (index, element) tuple sequence.
> > > 
> > > 
> > > Swift-evolution thread:TBD(https://gist.github.com/erica/tbd)
> > > 
> > > Motivation
> > > 
> > > The standard library'senumerated()method returns a sequence of pairs 
> > > enumerating a sequence. The pair's first member is a monotonically 
> > > incrementing integer starting at zero, and the second member is the 
> > > corresponding element of the sequence. When working with arrays, the 
> > > integer is coincidentally the same type and value as anArrayindex but the 
> > > enumerated value is not generated with index-specific semantics. This may 
> > > lead to confusion when developers attempt to subscript a non-array 
> > > collection with enumerated integers. It can introduce serious bugs when 
> > > developers useenumerated()-based integer subscripting with non-zero-based 
> > > array slices.
> > > 
> > > 
> > > Indices have a specific, fixed meaning in Swift, which are used to create 
> > > valid collection subscripts. This proposal introducesindexed()to produce 
> > > a more semantically relevant sequence by pairing a 
> > > collection'sindiceswith its members. While it is trivial to create a 
> > > solution in Swift, the most common developer approach shown here 
> > > calculates indexes twice:
> > > 
> > > extension Collection {   /// Returns a sequence of pairs (*idx*, *x*), 
> > > where *idx* represents a   /// consecutive collection index, and *x* 
> > > represents an element of   /// the sequence.   func indexed() 
> > > ->Zip2Sequence<Self.Indices, Self>{     return zip(indices, self)   } }
> > > 
> > > Incrementing an index in some collections can be unnecessarily costly. In 
> > > a lazy filtered collection, an index increment is potentially O(N). We 
> > > feel this is better addressed introducing a new function into the 
> > > Standard Library to provide a more efficient design that avoids the 
> > > attractive nuisance of the "obvious" solution.
> > > 
> > > Detailed Design
> > > 
> > > Our vision ofindexed()bypasses duplicated index generation with their 
> > > potentially high computation costs. We'd create an iterator that 
> > > calculates each index once and then applies that index to subscript the 
> > > collection. Implementation would take place throughIndexedSequence, 
> > > similar toEnumeratedSequence.
> > > 
> > > Impact on Existing Code
> > > 
> > > This proposal is purely additive and has no impact on existing code.
> > > 
> > > Alternatives Considered
> > > Not yet
> > > 
> > > 
> > > 
> > > _______________________________________________
> > > swift-evolution mailing list
> > > swift-evolution@swift.org(mailto:swift-evolution@swift.org)
> > > https://lists.swift.org/mailman/listinfo/swift-evolution
> > > 
> > 
> > _______________________________________________
> > swift-evolution mailing list
> > swift-evolution@swift.org(mailto:swift-evolution@swift.org)
> > https://lists.swift.org/mailman/listinfo/swift-evolution
> 
> 
> 
_______________________________________________
swift-evolution mailing list
swift-evolution@swift.org
https://lists.swift.org/mailman/listinfo/swift-evolution

Reply via email to