gpt4 book ai didi

string - scala中原始字符串插值和三引号有什么区别

转载 作者:行者123 更新时间:2023-12-03 06:17:33 25 4
gpt4 key购买 nike

Scala 有三重引号字符串 """String\nString""" 以在字符串中使用特殊字符而不转义。 Scala 2.10 还出于相同目的添加了 raw"String\nString"

raw"""""""" 的工作方式有什么区别吗?它们可以为同一个字符串产生不同的输出吗?

最佳答案

查看默认插值器的源代码(在这里找到:https://github.com/scala/scala/blob/2.11.x/src/library/scala/StringContext.scala),看起来“原始”插值器在每个字母上调用恒等函数,所以你输入的就是你得到的。您会发现的最大区别是,如果您在源中提供包含引号字符的字符串文字,则原始插值器仍然无法工作。即你不能说

raw"this whole "thing" should be one string object"

但你可以说

"""this whole "thing" should be one string object"""

所以您可能想知道“为什么我还要使用原始插值器呢?”答案是原始插值器仍然执行变量替换。所以

val helloVar = "hello"
val helloWorldString = raw"""$helloVar, "World"!\n"""

将为您提供字符串“hello, "World"!\n”,其中\n 不会转换为换行符,并在单词 world 周围加上引号。

关于string - scala中原始字符串插值和三引号有什么区别,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/25632924/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com