Zeichenketten interpolieren

Clojure:
Zeichenketten interpolieren

How to:

Mit Clojure können wir keine direkte String-Interpolation wie in einigen anderen Sprachen verwenden, aber wir haben mächtige Alternativen.

;; Verwende `str` und `format`
(def name "Welt")
(str "Hallo " name "!") ; "Hallo Welt!"

;; `format` kann benutzt werden für komplexere Szenarien
(format "Hallo, %s!" name) ; "Hallo, Welt!"

;; Ein weiterer Weg ist die Verwendung von `clojure.core/strint`
(require '[clojure.core/strint :refer [<<]])
(<< "Hallo, ${name}!") ; "Hallo, Welt!"

Eine saubere Ausgabe:

;; Saubere Ausgabe mit `format`
(format "Der Preis beträgt: %.2f Euro" 19.99) ; "Der Preis beträgt: 19.99 Euro"

Deep Dive:

Historisch gesehen hat Clojure keine eingebaute String-Interpolation wie zum Beispiel Python oder Ruby. Dies ist der funktionalen Natur Clojures geschuldet, die darauf ausgelegt ist, Seiteneffekte zu vermeiden und Unveränderlichkeit zu fördern.

Folgende Ansätze sind üblich in der Clojure-Welt:

  • str: Verkettet Werte zu einem neuen String.
  • format: Verwendet Java’s String.format zur Formatierung. Sehr mächtig für komplexe Ausgaben.
  • clojure.core/strint: Ermöglicht ein Template-Muster ähnlich der traditionellen String-Interpolation mit ${}-Syntax.

Da Clojure auf der JVM läuft, sind die str- und format-Methoden letztlich Bindungen zu Java-Methoden und bieten daher eine hohe Leistung. clojure.core/strint ist eine community-erstellte Bibliothek, die ergänzt, was in der Standardbibliothek fehlt.

See Also: