[swift-evolution] multi-line string literals.

Charlie Monroe charlie at charliemonroe.net
Mon Apr 3 03:48:46 CDT 2017


While I long for multiline string literals, I'd also very like to see a different syntax as in many cases, these can be XML/HTML snippets and the use of quotes is ubiqituous. I'd very much like to see a variant where you can simply paste almost any string without escaping it.

For example, Scala uses a tripple-quote syntax... As we've gotten rid of ' for character literals, we could use it for multiline strings?

Or possibly tripple-apostrophe for multiline strings?

let xml = '''
	<?xml version="1.0"?> 
	<catalog/> 
'''


> On Apr 3, 2017, at 9: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/0f911aaa/attachment.html>


More information about the swift-evolution mailing list