Cleaned up a bit after I tried to actually use it:

> extension Optional {
>     static func returnsNil(errorCode: Int) -> Wrapped? {
>         logError(errorCode)
>         return nil
>     }
> }
> 
> extension Int {
>     func foo() -> Int? {
>         return .returnsNil(12)
>     }
> }

You could write it as Optional.returnsNil(12), but the compiler can infer the 
type.


Jeff Kelley

slauncha...@gmail.com | @SlaunchaMan <https://twitter.com/SlaunchaMan> | 
jeffkelley.org <http://jeffkelley.org/>
> On Jan 3, 2016, at 10:51 PM, Jeff Kelley <slauncha...@gmail.com> 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
https://lists.swift.org/mailman/listinfo/swift-evolution

Reply via email to