当我尝试'\0'在 F# 中用作字符时,它不起作用。这是我看到的:
我在其他地方读过,Char.MinValue虽然可以完成同样的事情。
有什么理由'\0'不支持吗?
在F#规范描述了字符的文字语法:
3.5 字符串和字符
正则表达式转义字符 = '\' ["\'ntbrafv]
正则表达式非转义字符 = '\' [^"\'ntbrafv]
正则表达式 simple-char-char= | (除 '\n' '\t' '\r' '\b' '\a' '\f' '\v' ' \" 之外的任何字符)
regexp unicodegraph-short = '\''u' hexdigit hexdigit hexdigit hexdigit
regexp unicodegraph-long = '\''U' hexdigit hexdigit hexdigit hexdigit hexdigit hexdigit hexdigit hexdigit
regexp trigraph = '\' digit-char digit-char digit-char
正则表达式 char-char= | 简单字符字符| 转义字符 | 三合字母 | unicodegraph-short
\0 不匹配这些 - 如果你想要空字符,你可以使用
let c = '\000'
Run Code Online (Sandbox Code Playgroud)
或者 Char.MinValue
是支持的。F# 中的字符文字可以是 unicode 字符,也可以是 16 位 unicode 数字。只是反斜杠意味着它是短转义序列或长转义序列。
let A = '\u0041' // Capital letter A
Run Code Online (Sandbox Code Playgroud)
其 ASCII 版本是“\nnn”。所以
let A = '\065' // Capital letter A
Run Code Online (Sandbox Code Playgroud)
就这样\0变成了\000。
assert('\000' = Char.MinValue) // true
Run Code Online (Sandbox Code Playgroud)
请注意,unicode 说明符为十六进制,而短序列为十进制。
DEC(65) = HEX(41)
| 归档时间: |
|
| 查看次数: |
130 次 |
| 最近记录: |