[swift-evolution] [Idea] if let value!

Vladimir.S svabox at gmail.com
Tue May 17 10:50:03 CDT 2016


Could you clarify how to use `if case` to achieve the same target as 
proposed `if let value!` ?
(btw, probably `if let value? {..}` will be better)

On 17.05.2016 18:18, Matthew Johnson wrote:
>
>> On May 17, 2016, at 10:13 AM, Tony Allevato via swift-evolution
>> <swift-evolution at swift.org <mailto:swift-evolution at swift.org>> wrote:
>>
>> While I've sometimes (early on) wished for a shorter-hand syntax for that
>> construct, I've never been able to think of something that I thought was
>> better. I've gotten to the point where I don't particularly mind it anymore.
>>
>> Regarding the exclamation point specifically, seeing one of those in an
>> expression context says to me "this thing will die horribly if it is
>> nil/throws an error". Using it in this context where that's not the case
>> would probably go against users' expectations.
>
> Agree.  If we are going have syntax similar to pattern matching it should
> be the same as pattern matching.  This would mean using ‘?' rather than
> ‘!’.  However, we already have generalized pattern matching with `if case`
> for that.  This topic has been debated extensively.
>
>>
>>
>> On Tue, May 17, 2016 at 8:05 AM Vladimir.S via swift-evolution
>> <swift-evolution at swift.org <mailto:swift-evolution at swift.org>> wrote:
>>
>>     On 17.05.2016 16:51, Johan Jensen wrote:
>>      > This was one of the first and most commonly suggested ideas, when
>>     the Swift
>>      > Evolution mailing list first started.
>>      > Chris Lattner sums it up
>>      >
>>     <https://lists.swift.org/pipermail/swift-evolution/Week-of-Mon-20151214/003546.html>
>>      > in one of those threads:
>>      >
>>      >> This is commonly requested - the problem is that while it does help
>>      > reduce boilerplate, it runs counter to the goal of improving clarity.
>>      >
>>      > — Johan
>>
>>     Oh, thank you for letting this know.
>>
>>     Well, I totally disagree with Chris. And as soon as there was no
>>     'official'
>>     proposal and 'official' decision, I'd like to discuss this more.
>>
>>     I saw a lot of code like
>>     if let mySomeValue = mySomeValue {} in sources and even in books.
>>     Plus, I really believe that
>>     if let mySomeValue! {..} is better in any way: readability, less
>>     space for
>>     errors(when you need to repeat the same name) etc
>>
>>     FWIW, I suggest more explicit variant:
>>     if let value! {...} // with exclamation mark
>>     In that "old" proposal there was `if let value {...}`, was not so clear.
>>
>>     I can't accept an argument that you can use another name - as usually
>>     'good' name is already 'crafted' for the instance and you want to use
>>     it in
>>     next code.
>>     Otherwise, we need a 'best practice' to name optional variables with some
>>     prefix or suffix like : mySomeValueOpt, then `if let mySomeValue =
>>     mySomeValueOpt` will have a sense. But as I understand, we don't want to
>>     use such approach.
>>     Additionally, when you shadow optional value with same name - you are
>>     *protecting* yourself from using optional value inside block of unwrapped
>>     code. IMO it is a good idea.
>>     And want we or don't want, we already have this practice widely. So I
>>     believe this(my) proposal will improve the code.
>>
>>     I'd like to get opinion of the community regarding this feature.
>>
>>     On 17.05.2016 16:51, Johan Jensen wrote:
>>     > This was one of the first and most commonly suggested ideas, when
>>     the Swift
>>     > Evolution mailing list first started.
>>     > Chris Lattner sums it up
>>     >
>>     <https://lists.swift.org/pipermail/swift-evolution/Week-of-Mon-20151214/003546.html>
>>     > in one of those threads:
>>     >
>>     >> This is commonly requested - the problem is that while it does help
>>     > reduce boilerplate, it runs counter to the goal of improving clarity.
>>     >
>>     > — Johan
>>     >
>>     > On Tue, May 17, 2016 at 3:43 PM, Vladimir.S via swift-evolution
>>     > <swift-evolution at swift.org <mailto:swift-evolution at swift.org>
>>     <mailto:swift-evolution at swift.org
>>     <mailto:swift-evolution at swift.org>>> wrote:
>>     >
>>     >     It is common to shadow optional value name with unwrapped value
>>     with
>>     >     same name:
>>     >
>>     >     if let someGoodValue = someGoodValue {...}
>>     >
>>     >     What if we'll have a syntax to not repeat the variable name to
>>     achieve
>>     >     the same target:
>>     >
>>     >     if let someGoodValue! {...}
>>     >
>>     >     What do you think?
>>     >     _______________________________________________
>>     >     swift-evolution mailing list
>>     >     swift-evolution at swift.org <mailto:swift-evolution at swift.org>
>>     <mailto:swift-evolution at swift.org <mailto:swift-evolution at swift.org>>
>>     >     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
>>
>> _______________________________________________
>> swift-evolution mailing list
>> swift-evolution at swift.org <mailto:swift-evolution at swift.org>
>> https://lists.swift.org/mailman/listinfo/swift-evolution
>


More information about the swift-evolution mailing list