[swift-evolution] multi-line string literals.
Ricardo Parada
rparada at mac.com
Mon Apr 3 09:00:45 CDT 2017
What is the purpose of that backslash? It does not feel like an improvement.
I think we should focus on:
1. Looking pretty
2. Allow unescaped quote, double quote as well single/double apostrophe characters
3. Allow interpolation
4. No need to add the \n character for each line
5. It should have a continuation character
6. Keep it simple
Something like this:
let xml = M"<?xml version="1.0"?>
"<catalog>
" <book id="bk101" empty="">
" <author>\(author)</author>
" </book>
"</catalog>
Or maybe this:
let xml = """<?xml version="1.0"?>
"<catalog>
" <book id="bk101" empty="">
" <author>\(author)</author>
" </book>
"</catalog>
In the first example the multiline literal is started with M". In the second example it starts with three double quotes """. I really have no preference. In both examples there is no need to have a \ or \n at the end of the line.
You can have quote characters in the string, including double quotes as shown by empty="". You can have interpolation, i.e. \(author).
You have a continuation character which helps as a visual guide and as a marker for the beginning of each line.
The multi string literal ends when there are no more continuation characters.
> On Apr 3, 2017, at 3:01 AM, Adrian Zubarev via swift-evolution <swift-evolution at swift.org> wrote:
>
> Hello Swift community,
>
> on Github there is a PR for this proposal, but I couldn’t find any up to date thread, so I’m going to start by replying to the last message I found, without the last content.
>
> I really like where this proposal is going, and my personal preference are *continuation quotes*. However the proposed solution is still not perfect enough for me, because it still lacks of precise control about the trailing space characters in each line of a multi-line string.
>
> Proposed version looks like this:
>
> let xml = "<?xml version=\"1.0\"?>
> "<catalog>
> " <book id=\"bk101\" empty=\"\">
> " <author>\(author)</author>
> " <title>XML Developer's Guide</title>
> " <genre>Computer</genre>
> " <price>44.95</price>
> " <publish_date>2000-10-01</publish_date>
> " <description>An in-depth look at creating applications with XML.</description>
> " </book>
> "</catalog>
> ""
> I would like to pitch an enhancement to fix the last tiny part by adding the escaping character ‘' to the end of each line from 1 to (n - 1) of the n-lined string. This is similar to what Javascript allows us to do, except that we also have precise control about the leading space character through ’"’.
>
> The proposed version will become this:
>
> let xml = "<?xml version=\"1.0\"?>\
> "<catalog>\ // If you need you can comment here
> " <book id=\"bk101\" empty=\"\">\
> " <author>\(author)</author>\
> " <title>XML Developer's Guide</title>\
> " <genre>Computer</genre>\
> " <price>44.95</price>\
> " <publish_date>2000-10-01</publish_date>\
> " <description>An in-depth look at creating applications with XML.</description>\
> " </book>\
> "</catalog>\
> ""
> Here is another example:
>
> let multilineString: String = "123__456__\ // indicates there is another part of the string on the next line
> "__789_____\ // aways starts with `"` and ends with either `\` or `"`
> "_____0_" // precise control about pre- and post-space-characters
>
> let otherString = "\(someInstance)\ /* only comments are allowed in between */ "text \(someOtherInstance) text"
> This is simply continuation quotes combined with backslash concatenation.
>
>
>
>
>
> --
> Adrian Zubarev
> Sent with Airmail
>
>
> _______________________________________________
> swift-evolution mailing list
> swift-evolution at swift.org <mailto:swift-evolution at swift.org>
> https://lists.swift.org/mailman/listinfo/swift-evolution <https://lists.swift.org/mailman/listinfo/swift-evolution>
-------------- next part --------------
An HTML attachment was scrubbed...
URL: <https://lists.swift.org/pipermail/swift-evolution/attachments/20170403/af6efe64/attachment.html>
More information about the swift-evolution
mailing list