[swift-evolution] Add an ifPresent function to Optional
Erica Sadun
erica at ericasadun.com
Sun Mar 13 12:04:46 CDT 2016
`forSome` suggests that there is a filter in-place selecting some but not all of a collection's members. `forEach` better reflects that a closure is applied to each member of a collection. I am in favor of making optionals consistently act like 1-item-max collections.
-- Erica
> On Mar 13, 2016, at 10:58 AM, Pierre Monod-Broca via swift-evolution <swift-evolution at swift.org> wrote:
>
> Kevin: +1
>
> I don't know if it's relevant to put it in the standard library, but about the name : forSome would make more sense to me than forEach, or ifPresent
>
> Pierre
>
>> Le 12 mars 2016 à 17:32, Kevin Lundberg via swift-evolution <swift-evolution at swift.org> a écrit :
>>
>>
>>> +1 -- I've used the "an optional is a collection with max 1 element" rhetoric to explain map/flatMap, would be great if this was true instead of "morally true".
>>
>> If optional were a sequence or collection, then could if let be considered a special case for this?:
>>
>> for x in optionalX {
>> //...
>> }
>>
>> I do like the idea that optional could be considered a collection, but I also worry about confusion in this case:
>>
>> let a: [Int]? = [1,2,3]
>>
>> for x in a {
>> // a is [1,2,3], not the expected iteration of 1 through 3
>> }
>>
>> Today this does not compile and you are forced to unwrap the optional somehow. With this change I can see that someone may unexpectedly try this and be confused as to why the type of x is not what they expect.
>>
>>>> @Dave,Yes, CollectionType would be better than SequenceType.
>>>>
>>>> On Saturday, 12 March 2016, Dave via swift-evolution<swift-evolution at swift.org(mailto:swift-evolution at swift.org)>wrote:
>>>>> +1.
>>>>>
>>>>> I’d go so far as to suggest that maybe Optional should conform to CollectionProtocol, since you can pretty easily think of an Optional as a collection that can’t have more than one element.
>>>>>
>>>>> - Dave Sweeris
>>>>>
>>>>>> On Mar 10, 2016, at 7:32 PM, Erica Sadun via swift-evolution<swift-evolution at swift.org(javascript:_e(%7B%7D,'cvml','swift-evolution at swift.org');)>wrote:
>>>>>>
>>>>>> While I'm not convinced of the utility or lack thereof, wouldn't it make more sense
>>>>>> to extend `forEach` to support optionals in a similar way that map and flapMap
>>>>>> currently do rather than introduce `ifPresent`?
>>>>>>
>>>>>> lety:Int? =1
>>>>>> letn:Int? =nil
>>>>>>
>>>>>> _=y.map({print($0) }) // works in current Swift
>>>>>> _=n.map({print($0) }) // ditto
>>>>>>
>>>>>>
>>>>>> y.forEach{ print($0) } // not currently a thing
>>>>>> n.forEach{ print($0) } // ditto
>>>>>>
>>>>>> Just spitballing here.
>>>>>>
>>>>>> -- E
>>>>>>
>>>>>> _______________________________________________
>>>>>> swift-evolution mailing list
>>>>>> swift-evolution at swift.org(javascript:_e(%7B%7D,'cvml','swift-evolution at swift.org');)
>>>>>> https://lists.swift.org/mailman/listinfo/swift-evolution
>>>> --
>>>> -- Howard.
>>> _______________________________________________
>>> 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
> _______________________________________________
> swift-evolution mailing list
> swift-evolution at swift.org
> https://lists.swift.org/mailman/listinfo/swift-evolution
More information about the swift-evolution
mailing list