为何Lua的'\ddd'转义序列采用十进制而非八进制?
Lua用十进制
\ddd转义而非八进制的原因 Lua选择十进制作为字符串字节转义的基数,核心是出于实用和简洁的设计思路,和主流语言的八进制选择差异主要来自这几点:
- 直观性拉满:十进制是所有人最熟的计数方式,比如要表示ASCII的换行符(十进制10),直接写
\010就行,不用先把10转成八进制的12再写\012,省了换算步骤,也不容易写错。 - 没歧义更省心:八进制转义在有些场景下容易和后续数字搞混,比如
\1234在部分语言里会被解析成八进制123加数字4,但Lua的三位十进制限制刚好卡单字节的0-255范围,写完三位就截止,不会和后面的内容冲突。 - 贴合Lua的极简风格:Lua从设计之初就追求轻量、少规则,十进制转义不需要额外前缀(比如八进制的0),语法更干净,也不用开发者记额外的前缀规则。
- 目标场景适配:Lua早期多用于嵌入式、快速脚本开发,这类场景下开发者更关注直接用十进制对应字节值,八进制的传统继承对他们来说没那么重要。
主流语言比如C、Python用八进制,主要是继承C的历史传统,但Lua走的是自己的实用主义路线,所以选了更接地气的十进制转义。
引用自Lua参考手册:
我们可通过数值(含嵌入零)指定短字面量字符串中的任意字节,这可通过转义序列\ddd实现,其中ddd为最多三位十进制数字。
内容的提问来源于stack exchange,提问作者JustLoveCode
相关产品推荐
相关产品推荐

