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> 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 https://lists.swift.org/mailman/listinfo/swift-evolution