Clojure:
文字列の補間

How to:

Clojureには組み込みの文字列補間機能がないため、str関数やformat関数を使います。

;; strを使う場合
(def name "世界")
(println (str "こんにちは、" name "さん!"))

;; 出力: こんにちは、世界さん!

;; formatを使う場合
(def age 30)
(println (format "私は%d歳です。" age))

;; 出力: 私は30歳です。

Deep Dive

Clojureでは直接的な文字列補間はサポートされていませんが、他の関数を通じて似たようなことができます。歴史的には、ClojureはJavaの仮想マシン(JVM)上で動くため、JavaのStringクラスの機能を利用できます。これがformat関数の根幹です。

文字列補間の別の方法としては、clojure.pprint/cl-format関数があります。この関数はCommon LispのformatのClojure版です。また、テンプレートエンジンや外部ライブラリを使うこともできます。例えば、strintライブラリはScala風の文字列補間を提供します。

文字列補間の実装詳細に関心があるなら、それぞれの関数のソースコードを見るのがいいでしょう。たとえばstrは可変長引数を取り、それらを連結します。formatjava.lang.String.formatを呼び出します。

See Also