[swift-evolution] multi-line string literals.
Michael Peternell
michael.peternell at gmx.at
Tue Apr 26 15:05:09 CDT 2016
Comments inline.
> Am 26.04.2016 um 15:32 schrieb Ted F.A. van Gaalen <tedvgiosdev at gmail.com>:
>
> Hi Michael
>
> What happens if a delimiter in this case: “””
> occurs embedded in the data? like so (two times here):
that's a problem you always have. And I think pasting a few lines of text is a (much) more common use case than wanting to have a string literal that contains """ in it. I have never needed a string literal that contained """, and as long as you don't create a parser for a language that wants to parse such literals, the use cases are very rare IMO. Furthermore, if the string interpolation and escape sequences are enabled, I can answer this directly: you write """some text
some text. Here you have 3 double quotes: ""\" and here again \"""
"""; you can just put a backslash before one of the offending double quotes.
I think starting each line with \\ is really ugly, and I wouldn't consider this a true "multi-line string literal". Because instead of writing
\\bla bla
\\bla bla
I'd rather write
"bla bla\n"
"bla bla"
>
> “””
> dfksposdkj dslkd s hfdslk dskdslk lskd sk aaasd
> lfsdlks dslksd sdlk sdlksd “”” fskfsdalkfsd “”” fdjf dkjfds
> “”"
>
> Having a particular token at the start of a line (or after leading space(s) ) to define a data line
> allows us to use *all* available characters behind it.
>
> Actually after further thinking, I assume that 1 token is not enough, perhaps there should be two tokens e.g.
>
> \\ ……………... to process escaped chars, like \… and \(item),
> the same way as with normal Swift string literals
>
> \@…………. to take all characters as is without conversion?
>
>
> Examples:
> 1.
> let someText =
> \\There are \t \t \(nrofboxes) boxes avai
> \\lable.
> converts to:
> "There are 12 boxes available."
really? so I have to write \n if I want to have a newline?
>
> 2.
>
> let someText =
> \@There are \t \t \(nrofboxes) boxes avai
> \@able.
> String taken as is, nothing is converted:
> "There are \t \t \(nrofboxes) boxes available."
>
> Of course one could choose other tokens than \\ and \@
> they just looked convenient to me...
>
> TedvG
>
>
>> On 26.04.2016, at 07:53, Michael Peternell <michael.peternell at gmx.at> wrote:
>>
>> """Just in my opinion:
>> having to start each line with a particular token kinda defeats the purpose of multiline string literals.
> Why?
because IMHO the purpose of multiline string literals *is* that you can copy&paste multiple lines of text directly into the editor? If I call \\literals a 'multi-line literal', I can call "normal strings" multiline too, can't I?
What makes
\\this
\\string
a 'multiline string literal'
"and this "
"string"
not? (What is the definition of a "multiline string literal"?)
-Michael
More information about the swift-evolution
mailing list