LoginSignup
4
2

More than 1 year has passed since last update.

Clojureの書き方

Posted at

Clojureに触る機会があり、書き方が他の言語と異なっていたため簡単に纏めておく。

変数の定義

他の言語では

他の言語では以下のように書くことが多く、見慣れていると思う。

他言語記載例
int sample_variable = value;

Clojureでは

Clojureでは、以下のように変数定義を書くことになる。

Clojure記載例
(def sample-variable value)

intなどデータ型の記載が存在せず、defと書くことになる。

defとは

Clojureで使用するdefとは、関数名や変数名を定義するとき使用する宣言。
他の宣言としてはfndefnなどがあり、それぞれ以下の場合に使用する。
・fnは関数の処理を記載する場合に使用する。関数名の定義はしない
・defnは、def+fnのような宣言。関数名定義と関数の処理を記載する際に使用する

関数の定義

関数の定義の記載方法について、引数なしと引数あり場合で纏めていく。

他の言語では

他言語の記載例としては、中括弧を使用して処理を記載する場合が多い。

他言語記載例(引数なし)
int sample_function() {
  処理
}
他言語記載例(引数あり)
int sample_function(int arg1, int arg2) {
  処理
}

Clojureでは

一方Clojureでは、中括弧を使用せずに

Clojure記載例(引数なし)
(defn sample-function
  []
  (処理)
)
Clojure記載例(引数あり)
(defn sample-function
  [arg1, arg2]
  (処理)
)

と書く。

関数への引数の渡し方

他の言語では

他の言語だと以下のような形で引数を渡す形が多いと思う。

他言語記載例
sample_function(arg1, arg2);

Clojureでは

Clojureでは、以下のように引数を渡すことになる。

Clojure記載例
(sample-function arg1 arg2)

関数の返り値を別の関数に渡す方法

他の言語では

関数の返り値を別の関数に渡す場合、他の言語では以下のような書き方で渡すことになる。

他言語記載例1
arg1 = sample_function1();
sample_function2(arg1, arg2);
他言語記載例2
sample_function2(sample_function1(), arg2);

Clojureでは

Clojureでは以下のように返り値を渡す。

Clojure記載例1
((def arg1 sample-function1)
 (sample-function2 arg1 arg2))

シングルアロー(->)を使用することで以下のように書くこともできる。

Clojure記載例2
(->(sample-function1)
    (sample-function2 arg2))

HelloWorld

標準出力にHello Worldを出すときは、以下のように書く。

Clojure記載例
(println "Hello World!")
4
2
0

Register as a new user and use Qiita more conveniently

  1. You get articles that match your needs
  2. You can efficiently read back useful information
  3. You can use dark theme
What you can do with signing up
4
2