[swift-evolution] Declaring a function that always returns nil
Jeff Kelley
slaunchaman at gmail.com
Sun Jan 3 21:54:19 CST 2016
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
SlaunchaMan at gmail.com | @SlaunchaMan <https://twitter.com/SlaunchaMan> | jeffkelley.org <http://jeffkelley.org/>
> On Jan 3, 2016, at 10:51 PM, Jeff Kelley <SlaunchaMan at 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
>
> 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.)
-------------- next part --------------
An HTML attachment was scrubbed...
URL: <https://lists.swift.org/pipermail/swift-evolution/attachments/20160103/919785de/attachment.html>
More information about the swift-evolution
mailing list