コマンドライン引数の読み取り

Clojure:
コマンドライン引数の読み取り

How to: (方法)

;; “args” refers to a vector of arguments passed from the command line
(defn -main [& args]
  (println "Command line arguments:" args))

;; Run the program in terminal:
;; $ clojure -m your-namespace-here argument1 argument2

;; Sample output:
;; Command line arguments: [argument1 argument2]

Deep Dive (深い情報)

コマンドライン引数は、Unixの時代からある。環境変数や設定ファイルもパラメーターを設定する方法だが、より動的に指示を与えたい時に引数が選ばれる。Clojureでは、-main関数を定義すると、可変個引数としてコマンドライン引数を受け取る。引数は文字列のベクトルとして処理が行われる。

LeiningenやBootなどのビルドツールを使い、コマンドラインからClojureプログラムを実行することが多い。Clojure 1.9から、cljスクリプトとdeps.ednも使われるようになった。

実装については、argsは基本的に*command-line-args*グローバル変数で管理されるが、これは避けるべき。その理由は、引数がグローバルに存在すると、関数が外部の状態に依存することになり、関数型プログラミングの原則に反するから。

See Also (関連情報)