Для чего используется :: в clojure? - PullRequest
77 голосов
/ 24 апреля 2011

Я понимаю ключевые слова в Clojure: ключевое слово. Но для чего используется ::? Почему это выглядит так, как будто имеет привязку?

user=> :foo
:foo
user=> ::foo
:user/foo

Ответы [ 2 ]

77 голосов
/ 24 апреля 2011

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

24 голосов
/ 01 июня 2015

Как теперь задокументировано для Clojure , а также для ClojureScript , :: ключевые слова также могут использоваться для разрешения псевдонимов пространства имен.Например, ::foo/bar будет иметь значение :clojure.core/bar, если foo является псевдонимом clojure.core.Исключение считывателя выдается, если foo не преобразуется в пространство имен.

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