[swift-evolution] Shorthand unwrap proposal

Charlie Monroe charlie at charliemonroe.net
Thu Jun 23 14:04:53 CDT 2016


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
>> 
>> 



More information about the swift-evolution mailing list