[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