2010-02-13 60 views
19

在PHP和其他一些脚本语言中有$var语法,而Java和其他语言我们只能做var

背后有什么理论吗?它有助于他们解析。如果不是,他们为什么会选择在前面加一个额外的角色?

+25

为什么鸟突然出现? – cletus 2010-02-13 12:31:37

+4

每一次...你接近 – 2010-02-13 12:35:51

+1

某些语言使用缩进一些括号...这就是为什么所有语言都有语法差异...在PHP之前,变量相同$ – 2010-02-13 13:30:05

回答

67

它可以防止与语言关键字冲突的变量名称,并允许它们在字符串中插入。

+5

这是一个很好的简洁的答案,真的没有什么帮助...一些例子或细节将有助于 – HorusKol 2010-02-13 13:08:11

+37

,然而......它与 – Jacco 2010-02-13 13:25:52

+2

这个问题完美搭配+以这种方式发现和处理变量要容易得多。 – dusoft 2010-02-13 13:36:01

9

我的理论是,像php这样的脚本语言会需要一些方法来继续运行,即使引入了一个新的保留字,比如php4 - > php5有catch添加。由于语言的变化,因为它是一种脚本语言,任何被捕获为变量名的网页都不会死亡。

这是不是与编译语言,因为一切都转换为二进制,并在语言中的任何更改将不会影响已编译的程序

+2

像Python这样的解释性语言没有任何可变的前缀。向后兼容性中断更改一直持续到该语言的下一个主要版本。 – badp 2010-02-13 13:35:48

+2

Perl有**和**编译。当然是字节码,但是'C#'又是这样。你应该真的把*编译*改为* static *,因为它更准确。 – 2010-02-15 14:42:11

8

一个问题,因为常数保留字来而不$东西

不要试图比较编程语言的语法......他们是正确的如此不同。 :)

6

因为某些语言是特别丑陋的脚本编写的工具,并且使用愚蠢的技巧来提醒“解析器”它有工作要做。

和其他语言是真实的语言设计工作所用真实变量名,而不是丑陋的宏观语法...

的一个使用$是Perl的相当得体的语言,但我可能会指出,Perl6放弃了它。

+3

在20世纪70年代,愚蠢的技巧可能是合理的,因为在编译器上编写代码比在人们阅读时容易。 – Dan 2010-02-15 07:44:19

+1

不幸的是,Perl6并没有丢弃sigils [1]($,@,%)。 [1] http://en.wikipedia.org/wiki/Perl_6#Sigil_invariance – nimrodm 2010-02-15 09:34:32

+4

**幸运的是** Perl 6没有丢弃信号,否则它将不再是Perl。 – 2010-02-15 14:39:17

8

由于其根源在于在Perl:PHP History

+2

对于低调选民:你想借一个简短的说明为什么? – 2011-02-24 08:38:59

+1

Perl的根源在于shell脚本。 – mob 2011-11-09 22:34:07

相关问题