Clojure-basic-syntax
Clojure-基本的な構文
Clojureの基本的な構文を理解するために、まず簡単なHello Worldプログラムを見てみましょう。
完全なプログラムとしてのHello World
完全なClojureプログラムで「Hello world」を作成します。 以下はその一例です。
例
上記のプログラムについて、次のことに注意する必要があります。
- プログラムは、main.cljというファイルに書き込まれます。 拡張子「clj」は、clojureコードファイルの拡張子名です。 上記の例では、ファイルの名前はmain.cljです。
- 「defn」キーワードは、関数を定義するために使用されます。 関数の詳細については、別の章で説明します。 しかし今のところ、helloworldという関数を作成していることに注意してください。この関数にはメインのClojureコードが含まれます。
- Clojureコードでは、「println」ステートメントを使用して、コンソール出力に「Hello World」を出力しています。
- 次に、hello-world関数を呼び出して、「println」ステートメントを実行します。
上記のプログラムは、次の出力を生成します。
出力
声明の一般的な形式
次の例に示すように、ステートメントの一般的な形式は中括弧で評価する必要があります。
上記の例では、式全体が中括弧で囲まれています。 上記のステートメントの出力は3です。 + operatorは、数字の追加に使用されるClojureの関数のように機能します。 1および2の値は、*関数のパラメーター*として知られています。
別の例を考えてみましょう。 この例では、「str」は2つの文字列を連結するために使用される演算子です。 文字列「Hello」と「World」がパラメーターとして使用されます。
例
上記の2つのステートメントを組み合わせてプログラムを作成すると、次のようになります。
出力
上記のプログラムは、次の出力を生成します。
ネームスペース
ネームスペースは、Clojureで定義されたモジュール間の論理境界を定義するために使用されます。
現在の名前空間
これは、現在のClojureコードが存在する現在のネームスペースを定義します。
構文
例
REPLコマンドウィンドウで、次のコマンドを実行します。
出力
上記のコマンドを実行すると、現在のネームスペースに応じて出力が遅延します。 以下は出力の例です。 Clojureコードの名前空間は-
Clojureのステートメントが必要
Clojureコードはライブラリにパッケージ化されています。 各Clojureライブラリは、Javaパッケージに類似した名前空間に属します。 「Require」ステートメントを使用してClojureライブラリをロードできます。
構文
例
以下は、このステートメントの使用例です。
上記のコードでは、「require」キーワードを使用して、入出力機能に必要なすべての機能を備えた名前空間clojure.java.ioをインポートしています。 必要なライブラリがないため、上記のコードで「ファイル」関数を使用できます。
Clojureのコメント
コメントは、コードを文書化するために使用されます。 単一行のコメントは、;;を使用して識別されます。行の任意の位置。 以下はその一例です。
例
区切り記号
Clojureでは、曲線または角かっこを使用してステートメントを分割または区切ることができます。
例
以下に2つの例を示します。
出力
上記のプログラムは、次の出力を生成します。
例
以下は別の例です。
出力
上記のプログラムは、次の出力を生成します。
空白
Clojureでは、空白を使用してステートメントのさまざまなコンポーネントを分割し、明確にすることができます。 これは、コンマ(、)演算子を使用して実行できます。
たとえば、次の2つのステートメントは同等であり、両方のステートメントの出力は15になります。
Clojureはコンマを無視しますが、プログラマが読みやすいようにコンマを使用する場合があります。
たとえば、次のようなハッシュマップ(def a-map \ {:a 1:b 2:c 3})があり、REPLウィンドウでその値を要求すると、Clojureは出力を\ {:aとして出力します1、:b 2、:c 3}。
特に大量のデータを表示している場合は、結果が読みやすくなります。
シンボル
Clojureでは、シンボルは他のプログラミング言語の識別子と同等です。 しかし、他のプログラミング言語とは異なり、コンパイラはシンボルを実際の文字列値と見なします。 シンボルは値であるため、他のオブジェクトと同様に、シンボルをコレクションに格納し、関数などに引数として渡すことができます。
シンボルに含めることができるのは、英数字と「* +!/. :-_?」が数字またはコロンで始まってはいけません。
シンボルの有効な例を次に示します。
Clojureプロジェクトの構造
最後に、Clojureプロジェクトの典型的なプロジェクト構造について話しましょう。 ClojureコードはJava仮想マシンで実行されるため、Clojure内のプロジェクト構造のほとんどは、Javaプロジェクトで見られるものと似ています。 以下は、ClojureプロジェクトのEclipseのサンプルプロジェクト構造のスナップショットです。
上記のプログラム構造について、次の重要事項に注意する必要があります。
- demo_1-これは、Clojureコードファイルが配置されているパッケージです。
- core.clj-これは、Clojureアプリケーションのコードを含むメインのClojureコードファイルです。
- Leiningenフォルダーには、Clojureベースのアプリケーションを実行するために必要なclojure-1.6.0.jarなどのファイルが含まれています。
- pom.propertiesファイルには、groupId、artifactId、Clojureプロジェクトのバージョンなどの情報が含まれます。
- project.cljファイルには、Clojureアプリケーション自体に関する情報が含まれています。 以下は、プロジェクトファイルの内容のサンプルです。