在阅读任何编程语言参考时,我总是遇到一个奇怪的事实:
变量或常量名称不能以数字
开头
当然,即使允许使用数字名称,使用这些名称也是不好的做法。
但真正的主要原因是什么?
解析会不会很难?
为了不对代码进行模糊处理,是否已弃用?
答案 0 :(得分:1)
存在此限制是为了简化语言解析器。接受具有前导数字的标识符所需的工作可能不值得复杂。
并非所有语言都有此限制;考虑Racket(Lisp / Scheme方言):
pu@pumbair: ~ racket
Welcome to Racket v5.3.6.
-> (define 9times! 9)
-> (* 9times! 2)
18
但当然Lisp语言特别易于解析。
至于混淆,我确信标识符可以是unicode字符(例如在Racket和Go中)的事实会让人感到更加困惑:
-> (define ǝʃqɐıɹɐʌ-ɐ-sı-sıɥ⊥ 144)
-> (sqrt ǝʃqɐıɹɐʌ-ɐ-sı-sıɥ⊥)
12
答案 1 :(得分:1)
为了使解析有效,解析器依赖于预测下一个字符以确定下一个令牌的可能性。当变量名,常量名和单词等标识符可以以数字开头时,为下一个标记分支的可能性数量会急剧增加。同样取决于解析方法,它可能需要向前看更多字符以确定令牌类型,这会导致解析器更加复杂。