[swift-evolution] for-else syntax
Freak Show
freakshow42 at mac.com
Wed Feb 1 13:34:50 CST 2017
collection ifEmpty:[ "...." ] ifNotEmptyDo: [:each | "...." ]
> On Feb 1, 2017, at 10:29, Chris Davis via swift-evolution <swift-evolution at swift.org> wrote:
>
> ah! I forgot about the break semantics, that’s definitely one for the con list.
>
> I like Nicolas’ solution, clear to read.
>
>> On 1 Feb 2017, at 18:18, Nicolas Fezans <nicolas.fezans at gmail.com <mailto:nicolas.fezans at gmail.com>> wrote:
>>
>> I tend to write this kind of treatment the other way around...
>>
>> if names.isEmpty {
>> // do whatever
>> } // on other cases I might have a few else-if to treat other cases that need special treament
>> else {
>> for name in names {
>> // do your thing
>> }
>> }
>>
>>
>> Nicolas Fezans
>>
>>
>>
>> On Wed, Feb 1, 2017 at 6:31 PM, Saagar Jha via swift-evolution <swift-evolution at swift.org <mailto:swift-evolution at swift.org>> wrote:
>> If you’re fine with a couple extra characters, you can use .isEmpty:
>>
>> for name in names {
>> // do your thing
>> }
>> if names.isEmpty {
>> // do whatever
>> }
>>
>> It’s a bit more typing, but I feel it makes your intentions more clear.
>>
>> Saagar Jha
>>
>>> On Feb 1, 2017, at 8:48 AM, Chris Davis via swift-evolution <swift-evolution at swift.org <mailto:swift-evolution at swift.org>> wrote:
>>>
>>> Hi,
>>>
>>> Often when I’m programming I stumble upon this scenario:
>>>
>>> I have a list of items that may or may not be empty - if it’s full, I do one thing, if it’s empty I do something else, my code looks like this:
>>>
>>> class Example_1
>>> {
>>> let names = ["Chris", "John", "Jordan"]
>>>
>>> /// Loop over names, if no names, print no names
>>> func run()
>>> {
>>> for name in names
>>> {
>>> print(name)
>>> }
>>>
>>> if names.count == 0
>>> {
>>> print("no names")
>>> }
>>> }
>>> }
>>>
>>> let exampleOne = Example_1()
>>> exampleOne.run()
>>>
>>> However, Personally, I would find it more pleasing to write something like this:
>>>
>>> class Example_2_Proposed
>>> {
>>> let names:[String] = []
>>>
>>> /// Loop over names, if no names, print no names
>>> func run()
>>> {
>>> for name in names
>>> {
>>> print(name)
>>> } else {
>>> print("no names")
>>> }
>>> }
>>> }
>>>
>>> let exampleTwo = Example_2_Proposed()
>>> exampleTwo.run()
>>>
>>> The difference here is a “for-else” type syntax where if there were no items in the array it would simply fall through to the else statement.
>>>
>>> What would be the pros/cons of introducing such syntax?
>>>
>>> Is there’s a way of doing something similar in swift already?
>>>
>>> Thanks
>>>
>>> Chris
>>>
>>>
>>>
>>>
>>> _______________________________________________
>>> swift-evolution mailing list
>>> swift-evolution at swift.org <mailto:swift-evolution at swift.org>
>>> https://lists.swift.org/mailman/listinfo/swift-evolution <https://lists.swift.org/mailman/listinfo/swift-evolution>
>>
>>
>> _______________________________________________
>> swift-evolution mailing list
>> swift-evolution at swift.org <mailto:swift-evolution at swift.org>
>> https://lists.swift.org/mailman/listinfo/swift-evolution <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/20170201/53b10a5c/attachment.html>
More information about the swift-evolution
mailing list