[swift-evolution] Shorthand unwrap proposal

David Sweeris davesweeris at mac.com
Thu Jun 23 14:32:11 CDT 2016


Dmitri pointed out a few posts ago that Swift already has this.
let opInt: Int? = nil
opInt.map {$0.toIntMax()} //Evaluates to nil

Are you talking about something different?

- Dave Sweeris

> On Jun 23, 2016, at 2:04 PM, Charlie Monroe via swift-evolution <swift-evolution at swift.org> wrote:
> 
> Sure, the exact syntax is a matter of discussion, I just wasn't that much of favor of the very short
> 
> doSomething(with: myOptional?)
> 
> - it looks like a great idea, making the code really short
> - on the other hand the question mark is next to the variable, but the method's execution is optional - in that sense something like doSomething(?: myOptional)(with: myOptional) makes more sense, declaring explicitely what optionals does the execution depend on.
> - nevertheless, in the interest of clarity and readability of the code, I'm still in favor of the original proposal, which requires you to either use if or guard.
> 
>> On Jun 23, 2016, at 8:57 PM, Tim Vermeulen <tvermeulen at me.com> wrote:
>> 
>> But ! still suggests force unwrapping, while ? suggests safe unwrapping. Why not use a question mark?
>> 
>>> It was in the previous proposal and suggested that you are not trying to shadow the previous variable, but trying to unwrap it - and it acts as unwrapped from there on.
>>> 
>>> 
>>>> On Jun 23, 2016, at 8:52 PM, Tim Vermeulen<tvermeulen at me.com>wrote:
>>>> 
>>>> Why with the exclamation mark? It suggests you’re force unwrapping something.
>>>> 
>>>>>> On Jun 23, 2016, at 8:45 PM, Tim Vermeulen via swift-evolution<swift-evolution at swift.org>wrote:
>>>>>> 
>>>>>> I would love to be able to do something like
>>>>>> 
>>>>>> doSomething(with: myOptional?)
>>>>> This actually looks good to me, though if I were a newcomer to the language, it would be really cryptic.
>>>>> 
>>>>> In case the function returned any value, it could become an optional, just like with try?...
>>>>> 
>>>>> I still, however, prefer the original proposal of if let myOptional! { doSomething(myOptional) }...
>>>>> 
>>>>>> 
>>>>>> which would be equivalent to
>>>>>> 
>>>>>> if let myValue = myOptional {
>>>>>> doSomething(with: myValue)
>>>>>> }
>>>>>> 
>>>>>> But it’s been discussed here before, and I don’t think people were very enthusiastic about it.
>>>>>> 
>>>>>>> I was wondering if people would be open to adding an unwrap method to the Optional type,I already have a method like this which shortens code for me.
>>>>>>> 
>>>>>>> So this:
>>>>>>> 
>>>>>>> let myReallyLongOptionalName: String? = "Hey"
>>>>>>> 
>>>>>>> if let string = myReallyLongOptionalName {
>>>>>>> doSomethingWith(string)
>>>>>>> }
>>>>>>> 
>>>>>>> Could become"
>>>>>>> 
>>>>>>> let myReallyLongOptionalName: String? = "Hey"
>>>>>>> 
>>>>>>> myReallyLongOptionalName.unwrap {
>>>>>>> doSomethingWith($0)
>>>>>>> }
>>>>>>> 
>>>>>>> The block would only be fired if myReallyLongOptionalName has a value.
>>>>>>> 
>>>>>>> 
>>>>>>> ___________________________________
>>>>>>> 
>>>>>>> 
>>>>>>> James⎥Head of Trolls
>>>>>>> 
>>>>>>> 
>>>>>>> james at supmenow.com(mailto:james at supmenow.com)⎥supmenow.com(http://supmenow.com)
>>>>>>> 
>>>>>>> 
>>>>>>> Sup
>>>>>>> 
>>>>>>> 
>>>>>>> Runway East
>>>>>>> 
>>>>>>> 
>>>>>>> 10 Finsbury Square
>>>>>>> 
>>>>>>> 
>>>>>>> London
>>>>>>> 
>>>>>>> 
>>>>>>> EC2A 1AF
>>>>>> _______________________________________________
>>>>>> swift-evolution mailing list
>>>>>> swift-evolution at swift.org
>>>>>> https://lists.swift.org/mailman/listinfo/swift-evolution
>>> 
>>> 
> 
> _______________________________________________
> swift-evolution mailing list
> swift-evolution at swift.org
> https://lists.swift.org/mailman/listinfo/swift-evolution

-------------- next part --------------
An HTML attachment was scrubbed...
URL: <https://lists.swift.org/pipermail/swift-evolution/attachments/20160623/1e8ccbfb/attachment-0001.html>


More information about the swift-evolution mailing list