Here’s a idea, what if you could use a symbol to denote that you want the same name used?
Here’s an interesting sign from music: https://en.wikipedia.org/wiki/Repeat_sign Then you can write (one) of these: if let |: = mySomeValue { // Use unwrapped } if let mySomeValue = :| { // Use unwrapped } Not sure which one is more clear. Just a totally random idea! I’m not sure about the above symbols, but it would help in other places too from memory to not have to write the same variable name twice. > On 18 May 2016, at 1:18 AM, Matthew Johnson via swift-evolution > <[email protected]> wrote: > >> >> On May 17, 2016, at 10:13 AM, Tony Allevato via swift-evolution >> <[email protected] <mailto:[email protected]>> 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 >> <[email protected] <mailto:[email protected]>> 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 >> >> <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 >> > >> > <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 >> > <[email protected] <mailto:[email protected]> >> > <mailto:[email protected] <mailto:[email protected]>>> >> > 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 >> > [email protected] <mailto:[email protected]> >> > <mailto:[email protected] <mailto:[email protected]>> >> > https://lists.swift.org/mailman/listinfo/swift-evolution >> > <https://lists.swift.org/mailman/listinfo/swift-evolution> >> > >> > >> _______________________________________________ >> swift-evolution mailing list >> [email protected] <mailto:[email protected]> >> https://lists.swift.org/mailman/listinfo/swift-evolution >> <https://lists.swift.org/mailman/listinfo/swift-evolution> >> _______________________________________________ >> swift-evolution mailing list >> [email protected] <mailto:[email protected]> >> https://lists.swift.org/mailman/listinfo/swift-evolution > > _______________________________________________ > swift-evolution mailing list > [email protected] <mailto:[email protected]> > https://lists.swift.org/mailman/listinfo/swift-evolution > <https://lists.swift.org/mailman/listinfo/swift-evolution>
_______________________________________________ swift-evolution mailing list [email protected] https://lists.swift.org/mailman/listinfo/swift-evolution
