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@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@swift.org <mailto:swift-evolution@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
>> 
>> slauncha...@gmail.com <mailto:slauncha...@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@swift.org <mailto:swift-evolution@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@swift.org <mailto:swift-evolution@swift.org>
>> https://lists.swift.org/mailman/listinfo/swift-evolution 
>> <https://lists.swift.org/mailman/listinfo/swift-evolution>
>  _______________________________________________
> swift-evolution mailing list
> swift-evolution@swift.org <mailto:swift-evolution@swift.org>
> https://lists.swift.org/mailman/listinfo/swift-evolution 
> <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