Please see discussion inline. On Fri, Jan 20, 2017 at 1:09 PM Jeremy Pereira < jeremy.j.pere...@googlemail.com> wrote:
> > > On 20 Jan 2017, at 10:30, Maxim Veksler via swift-evolution < > swift-evolution@swift.org> wrote: > > > > One ask - make string interpolation great again? > > > > Taking from examples supplied at > https://github.com/apple/swift/blob/master/docs/StringManifesto.md#string-interpolation > > > > "Column 1: \(n.format(radix:16, width:8)) *** \(message)" > > > > Why not use: > > > > "Column 1: ${n.format(radix:16, width:8)} *** $message" > > > > Which for my preference makes the syntax feel more readable, avoids the > "double ))" in terms of string interpolation termination and function > termination points. And if that's not enough brings the "feel" of the > language to be scriptable in nature common in bash, sh, zsh and co.. > scripting interpreters and has been adopted as part of ES6 interpolation > syntax[1]. > > > > This idea came up once before on Swift Evo. The arguments against are: > > 1. Swift already has an “escape” character for inserting non literal stuff > into strings - the “\” character. Either you have two - increasing > complexity for both the developer and the Swift compiler’s tokeniser - or > you have to change everything that uses “\” to use $ e.g. $t $n instead of > \t \n. > > I would claim that this serves as an reinforcement of making the distinctions. "\t" is not the same behavior as "\(someVariable)" both conceptually - I think there is a clear distinction between inserting a "constant symbol" to inserting "the string content of a variable" and semantically - While you would use \t to insert a tab you are mandated by the semantics to use \( .. ) to insert the contents of a variable. > 2. The dollar sign is a disastrous symbol to use for an special character, > especially in the USA where it is commonly used to signify the local > currency. Yes, I know it is used for interpolation in Perl, Shell and > Javascript and others, but “this other language I like does X, therefore > Swift should do X” is not a good argument. > > Please name concrete examples? I would believe that the case for $variableName to be rare enough to justify expecting the developer to make an escape claim with \$variableName, likewise for ${variableName}, if expected output is plain text I wouldn't imagine this "\$\{variableName\}" to be a far reaching expectation. The use of $ symbol is more reaching[1], and is being adopted constantly as the selected patten for even recent developments as Facebook's GraphQL query syntax[2] which to the best of my knowledge was invented in US. 3. There is already quite a lot of code that uses \( … ) for interpolation, > this would be a massive breaking change. > > True, but going forward that would enable a "better readable" code for larger number of users. Additionally I would suggest that automatic conversion using Swift Migration Assistant should be possible.
_______________________________________________ swift-evolution mailing list swift-evolution@swift.org https://lists.swift.org/mailman/listinfo/swift-evolution