是否有任何编程语言允许名称包含空格?(按名称,我指的是变量、方法、字段等)
11 回答
Scala 确实允许在标识符名称中使用空格字符(但要做到这一点,您需要用一对反引号将标识符括起来)。
示例(在 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
在 SQL 中,您可以在字段名称等中包含空格和其他非标识符字符。你只需要引用他们喜欢[field name]
或"field name"
。
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
PHP 可以:http ://blog.riff.org/2008_05_11_spaces_php_variable_names
Perl 还:
${'一些变量'} = 42; 打印 ${'some var'}, "\n"; ${'我的方法'} = sub { print "方法调用\n"; }; &${'我的方法'};
在 Ruby 中,您可以使用名为 as 的符号,:"this has a space"
但它用双引号括起来,所以我不确定您是否计算在内。
如果其他语言允许空格作为符号名称中的有效字符,那么您将不得不使用其他字符来分隔它们。
JavaScript 的更新和实验性 Web 脚本(子)类型:https ://github.com/featurist/pogoscript/wiki
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"));
变量名中的空格问题在于它需要解释,因为空格通常意味着“好的,当前标记的结尾,开始另一个标记”。此规则的例外情况必须有一些特殊指示符,例如字符串中的引号(“这是一个测试”)。
我们的PARLANSE并行编程语言就是这样一种。事实上,它允许标识符中的任何字符,尽管其中许多字符(包括空格)必须被转义(以 ~ 开头)才能包含在名称中。这是一个例子:
~'Buffer~ Marker~'
这用于让 PARLANSE 轻松引用来自其他语言的任意符号(特别是来自任意参考文档的 EBNF,我们无法控制使用的标点符号)。
我们不经常使用此功能,但是当需要它时,这意味着我们可以忠实于其他文档中的令牌。
您也许可以在此网站上找到不使用空格分隔表达式元素的深奥语言:http: //99-bottles-of-beer.net
例如...空格:D
某些 SQL 方言允许数据库、表和字段的名称中包含空格。
例如,在 SQL Server 中,您可以通过将表名放入[square brackets]
或(取决于连接选项)放入"double quotes"
.
创建支持标识符中的空格的这种语言应该没有太多问题,只要有足够的分隔标记来说明标识符结束的解析器(例如运算符、大括号、逗号和臭名昭著的分号)。它只是不会大大提高源代码的可读性。