Scala: ключевое слово в качестве имени пакета - PullRequest
18 голосов
/ 01 августа 2009

Я пытаюсь использовать библиотеку Java (исходный код недоступен), которая определяет пакет xxx.xxx.object . Scala жалуется на наличие «объекта» в имени пакета, поэтому я не могу импортировать из него и не могу ссылаться на его классы с полностью определенным именем.

Есть ли способ обойти это?

Ответы [ 2 ]

29 голосов
/ 01 августа 2009

Обертывание объекта в `(кавычка рядом с 1) должно работать.

xxx.xxx.`object` 
24 голосов
/ 01 августа 2009

Для завершения agilefall * answer , Спецификация языка Scala указывает, что импорт состоит из id:

id ::= plainid
| ‘\`’ stringLit ‘\`’

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

Строки в кавычках - это решение, когда нужно получить доступ к идентификаторам Java, которые являются зарезервированными словами в Scala.
Например, оператор Thread.yield() недопустим, поскольку yield является зарезервированным словом в Scala. Однако вот обходной путь:

Thread.`yield`()
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...