Koodin järjestäminen funktioihin

Clojure:
Koodin järjestäminen funktioihin

Miten:

Clojure-funktiot määritellään käyttäen defn, sen jälkeen tulee nimi, parametrit ja runko. Tässä on nopea esimerkki.

(defn greet [name]
  (str "Hello, " name "!"))

(greet "Alex") ; => "Hello, Alex!"

Kuvitellaan nyt, että haluamme laskea suorakulmion pinta-alan. Sen sijaan, että sotkisimme kaiken yhteen, erotamme sen kahdeksi funktioksi:

(defn area [length width]
  (* length width))

(defn print-area [length width]
  (println "The area is:" (area length width)))

(print-area 3 4) ; => The area is: 12

Syväluotaus

Aikojen alussa koodaajat vain mukauttivat kaiken logiikkansa yhteen lohkoon. Se oli ruma näky. Sitten rakennoitu ohjelmointi tuli kuvioihin, ja funktioista tuli juttu. Clojuressa jokainen funktio on ensiluokkainen – voit heittää niitä ympäriinsä kuten mitä tahansa muuta arvoa.

Vaihtoehtoja? Jotkut saattaisivat kikkailla multimetodeilla tai korkeamman asteen funktioilla, mutta nuo ovat vain mausteita funktiopadassa.

Kaikki funktioiden yksityiskohdissa: ne ovat muuttumattomia Clojuressa, mikä tekee sivuvaikutusten sekasorrosta epätodennäköisempää. Ne nojautuvat voimakkaasti rekursioon tyypillisten silmukoiden sijaan, mikä istuu hyvin yksiin kielen toiminnallisten paradigmojen kanssa.

Katso Myös