Wieczos Blog

Ich laufe auf Sonnenschein!

Clojure Cheatsheet: Namespaces

by Thomas Wieczorek - Januar 6th, 2012.
Filed under: Clojure, Namespaces.

Dies ist mein persönlicher Clojure Namespace Spickzettel.

Ausgangssituation: Ich habe die Funktion call-me in der Datei dateiname.clj gespeichert. Je nachdem, wie ich require, refer und use verwende, funktioniert der Aufruf von call-me verschieden.

Namespace deklarieren

; steht in dateiname.clj als erste Anweisung
(ns mein.namespace.dateiname)

ns bietet  verschiedene Optionen:require und :use funktionieren wie ihre Funktionen. Die Dokumentation empfiehlt die Optionen zu verwenden statt require, refer und use.

(ns mein.namespace.woanders
  (:require [clojure.contrib :as cc])
  (:use [mein.namespace.dateiname :only [call-me]]))

Namespace laden

; Aufruf: mein.namespace.dateiname/call-me
(require 'mein.namespace.dateiname)
; Aufruf: d/call-me
(require '[mein.namespace.dateiname :as d])

Mehrere Namespaces laden

(require (clojure.contrib sql sql.tests))

Namespace laden & alle Symbole importieren

; Aufruf: call-me
(require 'mein.namespace.dateiname)
(refer 'mein.namespace.dateiname)

use kombiniert require und refer.

; Aufruf: call-me
(use 'mein.namespace.dateiname)

Verschiedene Optionen

refer und use bieten die Optionen :exclude, :only, :rename, um Symbole auszuschließen, nur bestimmte zu laden oder um geladene Symbole umzubenennen.

Leave a Reply