9

如何在 Scala 中为垂直制表符('\v',ASCII 11)编写字符文字?

'\v'不起作用。(无效的转义字符) '\11'应该是它,但是......

scala> '\11'.toInt
res13: Int = 9

但 9 是普通制表符 ('\t') 的 ASCII 码。那里发生了什么?

编辑:这有效并产生正确的字符,但我仍然想知道文字的语法。

val c:Char = 11
4

1 回答 1

11

你需要使用'\13'. 它是八进制的。

有关更多信息,请参阅Scala 语言规范

1.3.4 字符文字

句法:

characterLiteral ::= '\'' printableChar '\'' | '\'' charEscapeSeq '\''</p>

字符文字是用引号括起来的单个字符。该字符要么是可打印的 unicode 字符,要么由转义序列(第 1.3.6 节)描述。

示例 1.3.4 以下是一些字符文字: 'a' '\u0041' '\n' '\t' 请注意,'\u000A' 不是有效的字符文字,因为 Unicode 转换是在文字解析和 Unicode 字符 \ 之前完成的u000A(换行)不是可打印字符。可以使用转义序列 '\n' 或八进制转义符 '\12' (第 1.3.6 节)。

于 2012-10-19T14:41:23.213 回答