Есть ли язык, в котором имена могут включать пробелы? - PullRequest
2 голосов
/ 16 ноября 2010

Существует ли какой-либо язык программирования, позволяющий именам включать пробелы? (По именам я имею в виду переменные, методы, поля и т. Д.)

Ответы [ 11 ]

6 голосов
/ 18 ноября 2010

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
4 голосов
/ 18 ноября 2010

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
4 голосов
/ 16 ноября 2010

В SQL у вас могут быть пробелы и другие неидентифицирующие символы в именах полей и тому подобное.Вы просто должны процитировать их как [field name] или "field name".

2 голосов
/ 16 ноября 2010

PHP может: http://blog.riff.org/2008_05_11_spaces_php_variable_names

Perl также:

${'some var'} = 42;
print ${'some var'}, "\n";

${'my method'} = sub {
  print "method called\n";
};

&${'my method'};
1 голос
/ 28 января 2013

Более поздний инновационный и экспериментальный веб-сценарий (под) тип 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"));
1 голос
/ 16 ноября 2010

Наш PARLANSE язык параллельного программирования является одним из таких.Фактически, это позволяет любому символу в идентификаторах, хотя многие из них, включая пробелы, должны быть экранированы (перед ~), чтобы быть включенными в имя.Вот пример:

         ~'Buffer~ Marker~'

Это используется, чтобы позволить PARLANSE легко ссылаться на произвольные символы из других языков (в частности, из EBNF, взятых из произвольных ссылочных документов, где мы не можемконтролировать используемую пунктуацию).

Мы не часто используем эту функцию, но когда она необходима, это означает, что мы можем оставаться верными токенам из других документов.

1 голос
/ 16 ноября 2010

Проблема с пробелами в именах переменных заключается в том, что они подлежат интерпретации, поскольку пробел обычно означает «хорошо, конец текущего токена, запуск другого».Исключения из этого правила должны иметь специальный индикатор, такой как кавычки в строке («Это тест»).

1 голос
/ 16 ноября 2010

В Ruby у вас могут быть символы с именами :"this has a space", но они заключены в двойные кавычки, поэтому я не уверен, что вы их учитываете.

Если другие языки допускают пробел в качестве допустимого символав именах символов вам придется использовать какой-то другой символ для их разделения.

0 голосов
/ 10 августа 2011

Не должно быть особых проблем с созданием таких языков, поддерживающих пробелы в идентификаторах, если имеется достаточно разделительных токенов, которые говорят синтаксический анализатор, где заканчиваются идентификаторы (такие как операторы, фигурные скобки, запятые и печально известная точка с запятой).Это просто не сильно улучшает читаемость исходного кода.

0 голосов
/ 16 ноября 2010

Некоторые диалекты SQL позволяют базам данных, таблицам и полям иметь пробелы в своих именах.

Например, в SQL Server вы можете обратиться к таблице с пробелом в своем имени, либо введяимя таблицы в [square brackets] или (в зависимости от параметров подключения) в "double quotes".

...