Чтобы понять основной синтаксис Clojure, давайте сначала рассмотрим простую программу Hello World.
Hello World как полная программа
Напишите «Hello world» в полной программе Clojure. Ниже приведен пример.
пример
(ns clojure.examples.hello (:gen-class)) (defn hello-world [] (println "Hello World")) (hello-world)
Следующие вещи необходимо отметить о вышеупомянутой программе.
-
Программа будет написана в файле с именем main.clj. Расширение «clj» — это расширение имени файла кода clojure. В приведенном выше примере имя файла называется main.clj.
-
Ключевое слово defn используется для определения функции. Мы подробно рассмотрим функции в другой главе. Но пока знайте, что мы создаем функцию с именем helloworld, которая будет иметь наш основной код Clojure.
-
В нашем коде Clojure мы используем оператор println для вывода «Hello World» на вывод консоли.
-
Затем мы вызываем функцию hello-world, которая, в свою очередь, запускает оператор println.
Программа будет написана в файле с именем main.clj. Расширение «clj» — это расширение имени файла кода clojure. В приведенном выше примере имя файла называется main.clj.
Ключевое слово defn используется для определения функции. Мы подробно рассмотрим функции в другой главе. Но пока знайте, что мы создаем функцию с именем helloworld, которая будет иметь наш основной код Clojure.
В нашем коде Clojure мы используем оператор println для вывода «Hello World» на вывод консоли.
Затем мы вызываем функцию hello-world, которая, в свою очередь, запускает оператор println.
Вышеуказанная программа производит следующий вывод.
Выход
Hello World
Общая форма заявления
Общая форма любого оператора должна оцениваться в фигурных скобках, как показано в следующем примере.
(+ 1 2)
В приведенном выше примере все выражение заключено в фигурные скобки. Результат вышеприведенного оператора равен 3. Оператор + действует как функция в Clojure, которая используется для добавления чисел. Значения 1 и 2 известны как параметры функции .
Давайте рассмотрим другой пример. В этом примере str — это оператор, который используется для объединения двух строк. Строки «Hello» и «World» используются в качестве параметров.
(str "Hello" "World")
пример
Если мы объединим два приведенных выше утверждения и напишем программу, это будет выглядеть следующим образом.
(ns clojure.examples.hello (:gen-class)) (defn Example [] (println (str "Hello World")) (println (+ 1 2))) (Example)
Выход
Вышеуказанная программа производит следующий вывод.
Hello World 3
Пространства имен
Пространство имен используется для определения логической границы между модулями, определенными в Clojure.
Текущее пространство имен
Это определяет текущее пространство имен, в котором находится текущий код Clojure.
Синтаксис
*ns*
пример
В командном окне REPL выполните следующую команду.
*ns*
Выход
Когда мы запустим указанную выше команду, вывод будет отложен в зависимости от текущего пространства имен. Ниже приведен пример вывода. Пространство имен кода Clojure —
clojure.examples.hello (ns clojure.examples.hello (:gen-class)) (defn Example [] (println (str "Hello World")) (println (+ 1 2))) (Example)
Требовать заявление в Clojure
Код Clojure упакован в библиотеках. Каждая библиотека Clojure принадлежит пространству имен, которое аналогично пакету Java. Вы можете загрузить библиотеку Clojure с помощью оператора Require.
Синтаксис
(require quoted-namespace-symbol)
пример
Ниже приведен пример использования этого утверждения.
(ns clojure.examples.hello (:gen-class)) (require ‘clojure.java.io’) (defn Example [] (.exists (file "Example.txt"))) (Example)
В приведенном выше коде мы используем ключевое слово require для импорта пространства имен clojure.java.io, в котором есть все функции, необходимые для ввода / вывода. Поскольку у нас нет необходимой библиотеки, мы можем использовать функцию ‘file’ в приведенном выше коде.
Комментарии в Clojure
Комментарии используются для документирования вашего кода. Однострочные комментарии идентифицируются с помощью ;; в любой позиции на линии. Ниже приведен пример.
пример
(ns clojure.examples.hello (:gen-class)) ;; This program displays Hello World (defn Example [] (println "Hello World")) (Example)
Разделители
В Clojure операторы могут быть разделены или разделены с помощью фигурных или квадратных скобок.
пример
Ниже приведены два примера.
(ns clojure.examples.hello (:gen-class)) ;; This program displays Hello World (defn Example [] (println (+ 1 2 3))) (Example)
Выход
Вышеуказанная программа производит следующий вывод.
6
пример
Ниже приведен еще один пример.
(ns clojure.examples.hello (:gen-class)) ;; This program displays Hello World (defn Example [] (println [+ 1 2 3])) (Example)
Выход
Вышеуказанная программа производит следующий вывод.
[#object[clojure.core$_PLUS_ 0x10f163b "clojure.core$_PLUS_@10f163b"] 1 2 3]
Пробелы
Пробелы могут использоваться в Clojure для разделения различных компонентов оператора для большей ясности. Это можно сделать с помощью оператора запятой (,).
Например, следующие два оператора эквивалентны, и результат обоих операторов будет 15.
(+ 1 2 3 4 5) (+ 1, 2, 3, 4, 5)
Хотя Clojure игнорирует запятые, он иногда использует их, чтобы программисту было легче читать.
Например, если у вас есть хеш-карта, подобная следующей (def a-map {: a 1: b 2: c 3}), и вы запросите ее значение в окне REPL, Clojure напечатает вывод как {: a 1, : b 2,: c 3}.
Результаты легче читать, особенно если вы смотрите на большой объем данных.
Символы
В Clojure символы эквивалентны идентификаторам в других языках программирования. Но в отличие от других языков программирования, компилятор видит символы как фактические строковые значения. Поскольку символ является значением, символ может быть сохранен в коллекции, передан в качестве аргумента функции и т. Д., Как и любой другой объект.
Символ может содержать только буквенно-цифровые символы и ‘* +! /. : — _? ‘ но не должен начинаться с цифры или двоеточия.
Ниже приведены действительные примеры символов.
tutorial-point! TUTORIAL +tutorial+
Структура проекта Clojure
Наконец, давайте поговорим о типичной структуре проекта для проекта Clojure. Поскольку код Clojure выполняется на виртуальной машине Java, большая часть структуры проекта в Clojure аналогична той, что вы найдете в проекте Java. Ниже приведен снимок примера структуры проекта в Eclipse для проекта Clojure.
Следующие ключевые вещи должны быть отмечены о вышеупомянутой структуре программы.
demo_1 — это пакет, в котором находится файл кода Clojure.
core.clj — это основной файл кода Clojure, который будет содержать код для приложения Clojure.
Папка Leiningen содержит файлы, такие как clojure-1.6.0.jar, которые необходимы для запуска любого приложения на основе Clojure.
Файл pom.properties будет содержать такую информацию, как groupId, artifactId и версия проекта Clojure.
Файл project.clj содержит информацию о самом приложении Clojure. Ниже приведен пример содержимого файла проекта.