2010-11-16 68 views
2

是否有任何編程語言允許名稱包含空格? (按名稱,我打算變量,方法,字段等)是否有任何語言的名稱可以包含空格字符?

+1

只是好奇...爲什麼你要嗎? – 2010-11-16 15:39:26

+4

如果您有興趣在源代碼中添加更多空格,請查看以下內容:http://en.wikipedia.org/wiki/Whitespace_%28programming_language%29 – joni 2010-11-16 15:42:21

+0

我將提及空格,但它看起來不像像它有任何名字。 Prolog是另一個允許像'this那樣的引用字符串以與標識符相同的方式使用的人,正如人們已經注意到的Ruby,SQL等等。 – aschepler 2010-11-16 15:46:14

回答

6

Scala確實允許在標識符名稱中使用空格字符(但爲了可能,您需要用一對反引號包圍標識符)。

例(在斯卡拉REPL執行):

Welcome to Scala version 2.8.0.final (Java HotSpot(TM) Client VM, Java 1.6.0_22). 
Type in expressions to have them evaluated. 
Type :help for more information. 

scala> val `lol! this works! :-D` = 4 
lol! this works! :-D: Int = 4 

scala> val `omg!!!` = 4 
omg!!!: Int = 4 

scala> `omg!!!` + `lol! this works! :-D` 
res0: Int = 8 
1

在Ruby中,您可以使用名稱爲:"this has a space"的符號,但它被括在雙引號中,所以我不確定您是否計算了該值。

如果其他語言允許空白符號名稱中的有效字符,那麼您將不得不使用其他字符來分隔它們。

1

變量名稱中的空格問題在於它受解釋的限制,因爲空格通常表示「ok,當前令牌結束,從另一個開始。」此規則的例外必須具有某些特殊指示符,例如字符串中的引號(「This is a test」)。

1

我們PARLANSE並行編程語言就是這樣的。實際上,它允許標識符中的任何字符,儘管其中的許多字符(包括空格)必須被轉義(以〜開頭)以包含在名稱中。這裏有一個例子:

  ~'Buffer~ Marker~' 

這是用來讓PARLANSE輕鬆地引用任意符號從其他語言(特別是,從任意的引用文件,我們無法控制使用的標點符號採取EBNFs)。

我們不使用這個特性很多,但是當它需要的時候,這意味着我們可以保持對來自其他文檔的令牌的真實性。

0

一些SQL方言允許數據庫,表,以及在他們的名字中有空格的字段。

例如,在SQL Server中,可以通過將表名稱放入[square brackets]"double quotes"中的(取決於連接選項)來引用其名稱中具有空格的表。

4

在SQL中,可以在字段名稱等中包含空格和其他非標識符字符。你只需要引用它們,如[field name]"field name"

+0

我只見過Microsoft產品中的方括號約定。有沒有其他人使用它,或者他們大多使用我經常看到的雙引號? – FrustratedWithFormsDesigner 2010-11-16 15:45:58

+0

引號是ANSI標準的SQL,但我相信括號是從Sybase繼承的。這就是爲什麼SQL Server使用它們但Access不能。 – Gabe 2010-11-16 15:56:38

4

Common Lisp中可以用變量做,如果你周圍的變量名管道(|):

CL-USER> (setf |hello world| 42) 
42 
CL-USER> |hello world| 
42 

值得注意的是, 「管道」變量名也是區分大小寫的(通常變量名不在CL中)。

CL-USER> |Hello World| 
The variable |Hello World| is unbound. 
    [Condition of type UNBOUND-VARIABLE] 
CL-USER> (setf hello-world 99) 
99 
CL-USER> hello-world 
99 
CL-USER> HeLlO-WoRlD 
99 
0

不應該有建立這樣的語言支持空格在標識符,只要有足夠的分隔標記該說解析器很多問題,其中標識符結束(如運營商,大括號,逗號和臭名昭著的分號)。它並沒有提高源代碼的可讀性。

1

最近的一個創新和實驗的Web腳本(子)類型的JavaScript:http://pogoscript.org/

wind speed = 25 
average temperature = 32 

成爲

windSpeed = 25 
averageTemperature = 32 

屏幕後面。同時在返回變量的定位靈活的規則,所以你可以這樣做:

y = compute some value from (z) and return it 
md5 hash (read all text from file "sample.txt") 

變爲:

var y; 
y = computeSomeValueFromAndReturnIt(z); 
md5Hash(readAllTextFromFile("sample.txt")); 
相關問題