[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