Lädt...

🔧 Clojure is Awesome!!!


Nachrichtenbereich: 🔧 Programmierung
🔗 Quelle: dev.to

Nothing to say, just... Clojure Is Awesome!

(ns factory
  (:require [clojure.string :as str]))

(defprotocol DeliveryService
  "Interface for delivery services."
  (calculate-cost [this distance] "Calculates the delivery cost based on the distance.")
  (process-delivery [this package destination] "Executes the delivery of the package to the destination."))

(defrecord AirDelivery []
  DeliveryService
  (calculate-cost [_ distance]
    (* 5 distance))
  (process-delivery [_ package destination]
    (str "Package '" package "' will be delivered via Air to " destination)))

(defrecord LandDelivery []
  DeliveryService
  (calculate-cost [_ distance]
    (* 2 distance))
  (process-delivery [_ package destination]
    (str "Package '" package "' will be delivered via Land to " destination)))

(defrecord SeaDelivery []
  DeliveryService
  (calculate-cost [_ distance]
    (* 1 distance))
  (process-delivery [_ package destination]
    (str "Package '" package "' will be delivered via Sea to " destination)))

(defn delivery-factory
  "Factory that creates a delivery service based on the given type."
  [type]
  (case (str/lower-case type)
    "air"  (->AirDelivery)
    "land" (->LandDelivery)
    "sea"  (->SeaDelivery)
    (throw (IllegalArgumentException.
            (str "Invalid delivery type: " type)))))

(defn calculate-and-deliver
  "Service that uses the factory to calculate the cost and deliver a package."
  [type package destination distance]
  (let [service (delivery-factory type)]
    {:cost (calculate-cost service distance)
     :delivery (process-delivery service package destination)}))

(comment
  (calculate-and-deliver "air" "Box of Parts" "Pernambuco" 100)
  ;; => {:cost 500, :delivery "Package 'Box of Parts' will be delivered via Air to Pernambuco"}

  (calculate-and-deliver "land" "Toolbox" "Rio Grande Do Sul" 50)
  ;; => {:cost 100, :delivery "Package 'Toolbox' will be delivered via Land to Rio Grande Do Sul"}

  (calculate-and-deliver "space" "Heavy Cargo" "Port of Santos" 200)
  ;; => IllegalArgumentException: Invalid delivery type: space
)
...

🔧 An Animated Introduction to Clojure – Learn Clojure Programming Basics


📈 40.29 Punkte
🔧 Programmierung

🔧 Calling Clojure from Java using a real example (Clojure + Quarkus)


📈 40.29 Punkte
🔧 Programmierung

🔧 Clojure Is Awesome!!! [PART 15]


📈 31.83 Punkte
🔧 Programmierung

🔧 Clojure is Awesome!!!


📈 31.83 Punkte
🔧 Programmierung

🔧 Clojure Is Awesome!!! [PART 14]


📈 31.83 Punkte
🔧 Programmierung

🔧 Clojure Is Awesome!!! [PART 13]


📈 31.83 Punkte
🔧 Programmierung

🔧 Clojure Is Awesome!!! [PART 12]


📈 31.83 Punkte
🔧 Programmierung

🔧 Clojure Is Awesome!!! [PART 11]


📈 31.83 Punkte
🔧 Programmierung

🔧 Clojure Is Awesome!!! [PART 11]


📈 31.83 Punkte
🔧 Programmierung

🔧 Clojure Is Awesome!!! [PART 10]


📈 31.83 Punkte
🔧 Programmierung

🔧 Clojure Is Awesome!!! [PART 9]


📈 31.83 Punkte
🔧 Programmierung

🔧 Clojure Is Awesome!!! [PART 8]


📈 31.83 Punkte
🔧 Programmierung

🔧 Clojure Is Awesome!!! [PART 6]


📈 31.83 Punkte
🔧 Programmierung

🔧 Clojure Is Awesome!!! [PART 6]


📈 31.83 Punkte
🔧 Programmierung

🔧 Clojure Is Awesome!!! [PART 5]


📈 31.83 Punkte
🔧 Programmierung

🔧 Clojure Is Awesome!!! [PART 22]


📈 31.83 Punkte
🔧 Programmierung

🔧 Clojure Is Awesome!!! [PART 4]


📈 31.83 Punkte
🔧 Programmierung

🔧 Clojure Is Awesome!!! [PART 20]


📈 31.83 Punkte
🔧 Programmierung

🔧 Clojure Is Awesome!!! [PART 4]


📈 31.83 Punkte
🔧 Programmierung

🔧 Clojure Is Awesome!!! [PART 19]


📈 31.83 Punkte
🔧 Programmierung

🔧 Clojure Is Awesome!!! [PART 3]


📈 31.83 Punkte
🔧 Programmierung

🔧 Clojure Is Awesome!!! [PART 18]


📈 31.83 Punkte
🔧 Programmierung

🔧 Clojure Is Awesome!!! [PART 17]


📈 31.83 Punkte
🔧 Programmierung

🔧 Clojure Is Awesome!!! [PART 2]


📈 31.83 Punkte
🔧 Programmierung

🐧 GitHub - kahun/awesome-sysadmin: A curated list of amazingly awesome open source sysadmin .


📈 23.36 Punkte
🐧 Linux Tipps

🐧 GitHub - awesome-lists/awesome-bash: A curated list of delightful Bash scripts and resources.


📈 23.36 Punkte
🐧 Linux Tipps

🔧 Awesome Social Media Icons With Hover Effects (Font Awesome Icons & SVG Icons)


📈 23.36 Punkte
🔧 Programmierung

🐧 awesome-fetch - Awesome system information command-line fetch tools


📈 23.36 Punkte
🐧 Linux Tipps

🐧 awesome-fetch - Awesome system information command-line tools


📈 23.36 Punkte
🐧 Linux Tipps