Warning: file_get_contents(/data/phpspider/zhask/data//catemap/4/string/5.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
String 为什么IntelliJ Idea提供将字符串文字括在三个双引号中?_String_Scala_Intellij Idea_Quotes - Fatal编程技术网

String 为什么IntelliJ Idea提供将字符串文字括在三个双引号中?

String 为什么IntelliJ Idea提供将字符串文字括在三个双引号中?,string,scala,intellij-idea,quotes,String,Scala,Intellij Idea,Quotes,在使用IntelliJ Idea编写Scala代码时,我注意到它提供了将字符串文字括在第二对双引号中的功能。«转换为““字符串”»-它说。如果我同意的话,它只是在字符串前面加了两个双引号,在字符串后面加了两个双引号,使我的字符串看起来像 val myString = """my string value""" 这有什么意义?三重双引号在Scala中是否有特殊意义?对于,应该只有两种情况 简单字符串(可以将其转换为三重双引号多行字符串文字) 多行字符串文字,早在中引入(您可以将其转换回单个字符

在使用IntelliJ Idea编写Scala代码时,我注意到它提供了将字符串文字括在第二对双引号中的功能。«转换为““字符串”»-它说。如果我同意的话,它只是在字符串前面加了两个双引号,在字符串后面加了两个双引号,使我的字符串看起来像

val myString = """my string value"""
这有什么意义?三重双引号在Scala中是否有特殊意义?

对于,应该只有两种情况

  • 简单字符串(可以将其转换为三重双引号多行字符串文字)
  • 多行字符串文字,早在中引入(您可以将其转换回单个字符串)
所以当你看到这个:

您应该以
“”“
”结束。如果不是,则应在中报告为错误


但是如果有三个双引号,则IntelliJ将简单字符串正确地转换为多行字符串文字,这允许您定义:

val text = "This\nIs\nA\nMultiline\nString"
进入

在Scala 2.7和2.8之间,行为发生了变化:

在版本2.7中,三重双引号字符串在第三个连续引号处结束,在版本2.8中,它在至少三个双引号的系列中的最后一个引号处结束

Scala 2.7:

scala> val error = """can't finish with a quote: """"
<console>:1: error: unterminated string
       val error = """can't finish with a quote: """"
                                                    ^
在这种情况下,应该只有两种情况

  • 简单字符串(可以将其转换为三重双引号多行字符串文字)
  • 多行字符串文字,早在中引入(您可以将其转换回单个字符串)
所以当你看到这个:

您应该以
结束。如果不是,则应在中报告为错误


但是如果有三个双引号,则IntelliJ将简单字符串正确地转换为多行字符串文字,这允许您定义:

val text = "This\nIs\nA\nMultiline\nString"
进入

在Scala 2.7和2.8之间,行为发生了变化:

在版本2.7中,三重双引号字符串在第三个连续引号处结束,在版本2.8中,它在至少三个双引号的系列中的最后一个引号处结束

Scala 2.7:

scala> val error = """can't finish with a quote: """"
<console>:1: error: unterminated string
       val error = """can't finish with a quote: """"
                                                    ^

三重引号用于包含原始字符串

原始字符串可以包含任何字符,包括换行符(如@VonC所示),但通常也可以包含转义序列

一种常见用法是简化正则表达式模式,例如:

val Date = """((\d\d)/(\d\d)/(\d{4}))|((\w{3}) (\d\d),\s?(\d{4}))""".r
而不是

val Date = "((\\d\\d)/(\\d\\d)/(\\d{4}))|((\\w{3}) (\\d\\d),\\s?(\\d{4}))".r  

其实差别不大,但让正则表达式更简单通常是值得赞赏的。

三重引号用于包含原始字符串

原始字符串可以包含任何字符,包括换行符(如@VonC所示),但通常也可以包含转义序列

一种常见用法是简化正则表达式模式,例如:

val Date = """((\d\d)/(\d\d)/(\d{4}))|((\w{3}) (\d\d),\s?(\d{4}))""".r
而不是

val Date = "((\\d\\d)/(\\d\\d)/(\\d{4}))|((\\w{3}) (\\d\\d),\\s?(\\d{4}))".r  

其实差别不大,但让regex变得更简单通常是值得赞赏的。

确实有三重引号,我只是不这么认为。据我所知,你知道这意味着什么-所以你可以编辑你的问题,只解释什么是三重引号的意思,我会接受它。我已经知道了,但我想最好还是这样做。@Ivan:好的,我已经添加了一些多行字符串文字的示例和定义。确实有三重引号,我只是看不出来是对的。据我所知,你知道这意味着什么-所以你可以编辑你的问题,只解释什么是三重引号的意思,我会接受它。我已经知道了,但我想最好还是这样做。@Ivan:好的,我已经添加了一些多行字符串文字的示例和定义。这是不正确的<代码>原始“…”是需要的。@fommil,字符串插值在Scala(Scala 2.10.0)中出现得很晚。三重引用过去是,现在仍然是一种表达原始字符串的方式。我曾经有过这样的经历,有时成功,有时失败。你能引用一个权威的消息来源说它逃避反斜杠吗?我不能重现“不为我工作”的案例。。。我会投票给你:-P你能编辑你的答案,这样我就可以改变我的投票吗?(添加参考资料会很好)我复制了!只有在执行
s”““$blah\something”“”
时,原始状态才会中断。这是不正确的<代码>原始“…”是需要的。@fommil,字符串插值在Scala(Scala 2.10.0)中出现得很晚。三重引用过去是,现在仍然是一种表达原始字符串的方式。我曾经有过这样的经历,有时成功,有时失败。你能引用一个权威的消息来源说它逃避反斜杠吗?我不能重现“不为我工作”的案例。。。我会投票给你:-P你能编辑你的答案,这样我就可以改变我的投票吗?(添加参考资料会很好)我复制了!正是在执行
s”““$blah\something”“”
时,原始状态才被打破。