[swift-evolution] Extending the for loop to have multiple clauses

ilya ilya.nikokoshev at gmail.com
Wed Dec 9 15:51:03 CST 2015


> The proposed extension looks to me like is iterating both the suits and
rank at the same time.
So, it looks like different things to different people, which doesn't bode
well for its acceptance.

> The alternative now:
That's what zip is for:

var count = 0

for (x, y) in zip(ranks, suits) {
    count += 1
}

count // 4

On Thu, Dec 10, 2015 at 12:31 AM, J. Cheyo Jimenez via swift-evolution <
swift-evolution at swift.org> wrote:

> The proposed extension looks to me like is iterating both the suits and
> rank at the same time. In that case I think is a great idea.
>
> var cards: [(Suit,Rank)] = []
> for x in suits, y in ranks {
>   cards.append((x,y))
> }
>
> What I am expecting:
>
> x1, y1
> x2, y2
> x3, y3
> etc
>
> This reminds me that this is one of the ways I use the C-style for-loop.
> The alternative now:
>
> for (index, x) in suits.enumerate(){
>    let y = ranks[index]
>    cards.append((x,y))
>
> }
>
>
>
>
>
>
> On Wed, Dec 9, 2015 at 12:00 PM, Chris Eidhof via swift-evolution <
> swift-evolution at swift.org> wrote:
>
>> I think it could be really nice to extend the for-loop so that it can
>> have multiple clauses. Much like in the if-let with multiple clauses, I
>> could imagine a for-loop with multiple clauses:
>>
>> var cards: [(Suit,Rank)] = []
>> for x in suits, y in ranks {
>>   cards.append((x,y))
>> }
>>
>> This would be the same as writing:
>>
>> var cards: [(Suit,Rank)] = []
>> for x in suits {
>>   for y in ranks {
>>     cards.append((x,y))}
>>   }
>> }
>>
>> You could also do something like:
>>
>> for x in input1, y in (x..<end) {
>>    // Do something with (x,y)
>> }
>>
>> In fact, once we would have that, we could combine both if-let and for,
>> and make it more general, to end up with something like Haskell’s
>> do-notation or C#’s LINQ. But that might be taking it too far...
>>
>> Chris
>> _______________________________________________
>> swift-evolution mailing list
>> swift-evolution at swift.org
>> https://lists.swift.org/mailman/listinfo/swift-evolution
>>
>
>
> _______________________________________________
> swift-evolution mailing list
> swift-evolution at swift.org
> https://lists.swift.org/mailman/listinfo/swift-evolution
>
>
-------------- next part --------------
An HTML attachment was scrubbed...
URL: <https://lists.swift.org/pipermail/swift-evolution/attachments/20151210/5e243c6e/attachment.html>


More information about the swift-evolution mailing list