2010-11-16 77 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")); 
相关问题