I’m not saying that the + operator should automatically add a newline. I’m 
saying that both strings should contain a trailing newline, such that the 
visible result is the same.

By contrast, this would feel really strange:

let a = """
This is line one
This is line two

"""

let b = """
This is line three
This is line four
"""

(a + b) == """
This is line one
This is line two
This is line three
This is line four
"""

On initial intuition, it seems strange that ‘a’ has a blatantly visible blank 
line at the end which seemingly “disappears” when the strings are concatenated. 
If I think about it for a bit, I can understand why that would be the case, but 
I think it’s non-obvious.

-BJ

> On Apr 14, 2017, at 3:49 PM, Xiaodi Wu <[email protected]> wrote:
> 
> I disagree. I expect the last result to be from `a + "\n" + b`, for the 
> reasons I outlined earlier.
> 
> The concatenation operator + does not introduce implied separators when 
> joining strings. There is no reason to think that it should for multi-line 
> strings specifically.
> On Fri, Apr 14, 2017 at 16:35 BJ Homer via swift-evolution 
> <[email protected] <mailto:[email protected]>> wrote:
> 
>> Consider these two examples:
>> 
>> let string_1 = """foo"""
>> 
>> 
>> let string_2 = """
>>     foo
>>     """
>> What’s the intuitive result you’d expect without taking all the long talk 
>> from the list into account?
>> 
>> Personally, I’d say string_1 == string_2 is true.
>> 
> 
> I think it’s reasonable to expect them to be different, actually. I might 
> call these “single-line” and “multi-line” mode strings. The single-line mode 
> is primarily useful for being able to include unescaped double-quotes in the 
> string. If you’re in multi-line mode, though, it’s reasonable to be thinking 
> about things in terms of “lines”, and having a trailing newline there seems 
> reasonable. For example, I think it’s reasonable to expect this:
> 
> let a = """
> This is line one
> This is line two"
> """
> 
> let b = """
> This is line three
> This is line four
> """
> 
> (a + b) == """
> This is line one
> This is line two
> This is line three
> This is line four
> """
> 
> That seems like a reasonable model to work with multi-line strings.
> 
> -BJ
> _______________________________________________
> swift-evolution mailing list
> [email protected] <mailto:[email protected]>
> https://lists.swift.org/mailman/listinfo/swift-evolution 
> <https://lists.swift.org/mailman/listinfo/swift-evolution>

_______________________________________________
swift-evolution mailing list
[email protected]
https://lists.swift.org/mailman/listinfo/swift-evolution

Reply via email to