原始字符串中的换行符是否与平台相关?
val a = "one\ntwo";
val b = """one
two"""
println(a == b)
换句话说,上面的
println
语句是否保证打印true
?
我不认为它保证
a
和 b
相等。 Spec 对于原始字符串文字有这样的说法:
Kotlin 有两种类型的字符串文字:其中可能包含转义字符的转义字符串和可以包含换行符和任意文本的原始字符串。
因此,如果我要编写跨平台工作的代码,我会很明确(至少在他们这样做之前)。
这似乎是故意的,因为它仅编译为换行符。 此论坛帖子和 Roman Elizarov 的回复评论澄清了这一点。
""" -first line -second line """.trimIndent() ```
编译为
"-first line\n-secondline"
而不是
”-第一行 -第二行”
这是设计使然吗?有没有关于line的官方文档 三引号字符串中的分隔符?
回应:
是的。设计就是如此。有一个关键要求,即代码的行为不应依赖于编译它的平台。 ...
该线程的后续操作是 KT-56021,这是记录此案例的问题:
KT-56021:文档:提及多行字符串始终使用 NL 分隔符,无论平台如何。