|
|
|
|
|
by iterati
3006 days ago
|
|
This is actually why I love working in Clojure. There are a number of threading macros to make this pipeline stuff work in different scenarios (put the return value in as the first, last, or variable argument; stop and return nil if you ever get a nil to prevent NPEs from happening downstream; only do this step is a condition is met). A simple example: (-> id
get-account-details ;; {:plan "premium"}
:plan ;; "premium"
get-plan-details ;; {:price "$100.00"}
:price) ;; "$100.00"
It's equivalent to something like this in Python: account = get_account_details(id) # {"plan": "premium"}
plan_name = account.get("plan") # "premium"
plan_details = get_plan_details(plan_name) # {"price": "$100.00"}
return plan_details.get("price") # "$100.0"
|
|