2010-02-13 98 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

相關問題