2009-08-01 7 views
17

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

Есть ли способ вокруг него?

ответ

28

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

xxx.xxx.`object` 
+1

Я заметил в 2.8.1.final, что это все равно не поможет вам в консоли - вероятно, ошибка в коде Отв. Импорт работает отлично, но попытайтесь использовать один из символов, которые вы импортировали, и, по-видимому, что-то не ускользает в фоновом режиме. – spieden

24

Для завершения agilefall «ы answer, то Scala Language Specification упоминает, что импорт состоит из id:

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

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

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

Thread.`yield`() 
+0

Спасибо ... +1 за дополнительную информацию –

+0

Есть ли более официальное название для него, кроме просто «back = quote closeded strings»? Кто-то из #Scala упомянул «backtickling», но я не могу найти это в Google. –

+0

@AntonyStubbs «Программирование в Scala» также упоминает «обратные тики» (для буквального примера) – VonC

Смежные вопросы