[swift-evolution] Declaring a function that always returns nil

Félix Cloutier felixcca at yahoo.ca
Sun Jan 3 22:36:21 CST 2016


IMO, this is the best way to approach it.

Félix

> Le 3 janv. 2016 à 22:54:17, Jack Lawrence via swift-evolution <swift-evolution at swift.org> a écrit :
> 
> You could also use type inference on the return type:
> 
>   1> func returnsNil<T>(errCode: Int) -> T? { 
>   2.     print(errCode) 
>   3.     return nil 
>   4. } 
>   5> func returnsAnOptional() -> Int? { 
>   6.     return returnsNil(5) 
>   7. }    
> 
> 
>> On Jan 3, 2016, at 7:51 PM, Jeff Kelley via swift-evolution <swift-evolution at swift.org <mailto:swift-evolution at swift.org>> wrote:
>> 
>> Just spit-balling here, but couldn’t you do this with a generic extension on Optional?
>> 
>>> extension Optional {
>>>     func returnsNil(errorCode: Int) -> Wrapped? {
>>>         logError(errorCode)
>>>         return nil
>>>     }
>>> }
>> 
>> 
>> 
>> Jeff Kelley
>> 
>> SlaunchaMan at gmail.com <mailto:SlaunchaMan at gmail.com> | @SlaunchaMan <https://twitter.com/SlaunchaMan> | jeffkelley.org <http://jeffkelley.org/>
>>> On Jan 3, 2016, at 10:43 PM, Andrew Duncan via swift-evolution <swift-evolution at swift.org <mailto:swift-evolution at swift.org>> wrote:
>>> 
>>> It should be possible to declare a function that returns only nil, and have its return type be substitutable for any function that returns and Optional. This is something like having a bottom type but not really. What I mean is:
>>> 
>>> func returnsNil(errCode:Int) -> nil {
>>>    logError(errCode)     // A side-effect. Not FP, sosumi.
>>>    return nil
>>> }
>>> 
>>> func returnAOptional() -> A? {
>>>    // Bla bla. We discover an error so we decide to bail and return nil.
>>>    return returnsNil(errCode) // Would be legal.
>>> }
>>> func returnsBOptional() -> B? {
>>>    // Bla bla. We discover an error so we decide to bail and return nil.
>>>    return returnsNil(errCode)  // Would also be legal.
>>> }
>>> 
>>> I seek a return type that conforms to any Optional -- I think that implies it *must* (or correct me here) be nil.
>>> 
>>> Now perhaps this is already possible with wizardry from the Next Level. (There always is one.)
>>  _______________________________________________
>> 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>
-------------- next part --------------
An HTML attachment was scrubbed...
URL: <https://lists.swift.org/pipermail/swift-evolution/attachments/20160103/6588ea65/attachment.html>


More information about the swift-evolution mailing list