If the `where` keyword were to stay in the language, how would you feel about 
extending it? One major argument is that it is not as powerful as guard or if. 
How about something like this was allowed:

for text in self.texts where let data = text.data(usingEncoding: 
NSASCIIEncoding) {
        /// Do something with data or text
}


> On Jun 24, 2016, at 5:06 PM, Sean Heber via swift-evolution 
> <swift-evolution@swift.org> wrote:
> 
> I’ll share some of mine from a single game project. Note this hasn’t been 
> converted to Swift 3 and this is not all of them - just a varied sampling:
> 
> 
> for location in random.sample(map, density: 0.007) where 
> map.allowsGrassAt(location) && !map.hasGrassAt(location) {
> }
> 
> for location in type.designatedLocations where location.z == Global.cameraZ 
> && !locations.contains(location) {
> }
> 
> for location in region where location.z == mouseLocation.z {
> }
> 
> for location in path where location.z == Global.cameraZ {
> }
> 
> for below in location.below.cardinals where contains(below) && 
> hasSurfaceAt(below) {
> }
> 
> for neighbor in location.cardinals where contains(neighbor) && 
> isRampAt(neighbor) && !isFloorAt(neighbor.above) {
> }
> 
> for neighbor in cardinals where contains(neighbor) && !isSolidAt(neighbor) {
> }
> 
> for console in consoles.reverse() where console.hitTest(vector) {
> }
> 
> 
> 
> And these 2 made good use, IMO, of “if-where” but I think that’s no longer in 
> Swift 3? :/
> 
> 
> if let there = debugClickedSurfaceAt, here = mouseSurface where 
> Global.debugPathTest {
> }
> 
> if let here = mouseAt where Global.debugWalkNeighbors {
> }
> 
> 
> l8r
> Sean
> 
> 
> 
> 
>> On Jun 24, 2016, at 8:24 AM, Erica Sadun via swift-evolution 
>> <swift-evolution@swift.org> wrote:
>> 
>> Thank you for collecting and sharing these. 
>> 
>> I suspect both of us look at these and say "Ah yes, this supports exactly 
>> what I've been saying".
>> 
>> -- E
>> 
>>> On Jun 23, 2016, at 11:59 PM, William Shipley <w...@mac.com> wrote:
>>> 
>>> Here are some of my real-world examples:
>>> 
>>>        for modelUUIDAndInterfaceElement in modelUUIDsToInterfaceElements 
>>> where !usedInterfaceElements.contains(modelUUIDAndInterfaceElement.1) {
>>> …
>>>        }
>>> 
>>>        for anchor in wall.anchors where boundsRect.contains(anchor.origin) {
>>> …
>>>        }
>>> 
>>>        for otherWall: Wall in self where otherWall != wall && 
>>> !removedWalls.contains(otherWall) {
>>> …
>>>        }
>>> 
>>>        for wall in self as Set<Wall> {
>>>            for otherWall in self as Set<Wall> where otherWall != wall {
>>> …
>>>            }
>>>        }
>>> 
>>>        for wall in self as Set<Wall> where !checkedWalls.contains(wall) {
>>> …
>>>        } 
>>> 
>>> (x2 on that one)
>>> 
>>>        for otherPieceOfFurnitureNode in 
>>> localFurnitureModelUUIDsToInterfaceElements!.values where 
>>> otherPieceOfFurnitureNode !== pieceOfFurnitureNode {
>>> …
>>>        }
>>> 
>>>        for lineSegmentObject in wallRelatedLineSegments where 
>>> remainingLineSegments.contains(lineSegmentObject) {
>>> …
>>>        }
>>> 
>>>        for colinearLineSegmentObject in remainingLineSegments where 
>>> colinearLineSegmentObject.angle.isEssentially(infiniteLineAngle: 
>>> lineSegmentObject.angle) {
>>> …
>>>        }
>>> 
>>> 
>>> I think this is basically as many as are found on all of github?
>>> 
>>> -W
>> 
>> _______________________________________________
>> swift-evolution mailing list
>> 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

_______________________________________________
swift-evolution mailing list
swift-evolution@swift.org
https://lists.swift.org/mailman/listinfo/swift-evolution

Reply via email to