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
