Бесплатный курс по clojure. Зарегистрируйтесь для отслеживания прогресса →

Clojure: Объявление символов

Clojure — не функциональный язык программирования. В нем есть настоящие переменные, которые можно изменять (с помощью атомов, которые будут позже). Переменные создаются с помощью конструкции def и называются связыванием (binding).

(def id expr)
; id — идентификатор
; expr — выражение
; def создаёт "связывание".
(def lang "clojure")
(println lang) ; => clojure

Значением объявления может быть как нормальная форма (значение), так и составная:

(def result (+ 7 (- 4 6)))
(println result) ; => 5

def связывает имя (идентификатор) и значение следующего за ним выражения. Имена объявлений, состоящие из нескольких слов, соединяют с помощью дефиса. В Lisp-языках повсеместно принят так называемый "kebab-case".

(def dangerous-year 1984)
(println dangerous-year) ; => 1984

Для изменения значения объявления используется функция reset!, однако перед этим нужно объявить значение как "атом":

(def lang (atom "clojure"))
(println @lang) ; => clojure

; мутируем lang
(reset! lang "Clojure!!!")
(println @lang) ; => "Clojure!!!

В общем случае использовать атомы как переменные не рекомендуется. Clojure отлично поддерживает функциональную парадигму и всячески её поощряет. Код с переменными практически всегда легко заменяется на код с константами. Как было описано выше, тема атомов будет рассмотрена позже.

Задание

Создайте объявление, обозначающее "количество участников" (имя соорудите сами), присвойте ему значение 10 и распечатайте на экран.


Нашли ошибку? Есть что добавить? Пулреквесты приветствуются https://github.com/hexlet-basics
Если вы столкнулись с трудностями и не знаете, что делать, задайте вопрос в нашем большом и дружном сообществе