[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