I think we should focus on taking care of 99% of the cases. If you have a very long string then you use the good old fashioned string literal concatenation:
Let veryLongString2 = "word word word" + "word word word" + "word word word" By the way, the multi-line string should allow \n\n, or as many as you may want to throw in there. I don't see a problem with that. > On Apr 3, 2017, at 10:23 AM, Adrian Zubarev <adrian.zuba...@devandartist.com> > wrote: > > At quick glance I disagree with (4). If your current string would contain > something like "\n\n" would you really use another empty line with a single > unescaped quote? If you’re not, you’ll end up adding a single \n, but that on > the other than would be strange if you add it at the end of the line. > > Multi-lined strings should not be abused for adding new lines to the string > itself, however I’m fine with allowing single quotes without escaping them. > > If we’d really go that path then I still could not format some really long > hardcoded text for code readability in a multi lined string, just because of > the fact that it will alter my original string by automatically adding new > line characters. > > let veryLongString1 = "word word word … word word word" > > let veryLongString2 = """word word word > word word word > … > word word word > word word word""" > > // Logically that string should be the same, however during the > // automatic new lines we'll get this > > veryLongString1 == veryLongString2 // => false > What has the multi lined string solved here? Nothing. > > > > > -- > Adrian Zubarev > Sent with Airmail > > Am 3. April 2017 um 16:00:53, Ricardo Parada (rpar...@mac.com > <mailto:rpar...@mac.com>) schrieb: > >> 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@swift.org <mailto:swift-evolution@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@swift.org <mailto:swift-evolution@swift.org> >>> https://lists.swift.org/mailman/listinfo/swift-evolution >>> <https://lists.swift.org/mailman/listinfo/swift-evolution> >> > >
_______________________________________________ swift-evolution mailing list swift-evolution@swift.org https://lists.swift.org/mailman/listinfo/swift-evolution