5

原始字符串中的换行符是否依赖于平台?

val a = "one\ntwo";

val b = """one
two"""

println(a == b)

换句话说,println上面的语句是否保证打印true

4

2 回答 2

1

不幸的是,我找不到任何具体说明这一点的消息来源。感觉就像文档中应该包含的内容。

但是,IntelliJ 中有将原始字符串转换为普通字符串的意图操作。我认为可以安全地假设此操作不应更改代码的含义(或者如果确实如此,则应将其作为错误提交)。如果您在其中包含换行符的原始字符串上尝试此操作,您会看到它用\n字符替换换行符。

您可以在此处查看操作的来源,并对其进行测试,期望它将换行符转换为\n 此处(之前)此处(之后)


编辑:这里是关于原始字符串问题的评论(据我所知)指出原始字符串中有\n行尾。

于 2017-10-21T09:58:49.483 回答
0

我不会认为它保证a并且b是平等的。规范对原始字符串文字有这样的说法:

Kotlin 有两种类型的字符串文字:其中可能包含转义字符的转义字符串和可以包含换行符和任意文本的原始字符串。

  1. 规范并没有说它是一样的
  2. 该规范区分了“换行符”和“任意文本”
  3. 在@zsmb13 指向 Kotlin 讨论的链接中,Kotlin 工程师说编译器不会在原始字符串中保留换行符 (??)。

所以,如果我正在编写跨平台工作的代码,我会是明确的(至少在他们这样做之前)。

于 2017-10-21T09:59:04.407 回答