mirror of
https://github.com/jbranchaud/til
synced 2026-01-03 07:08:01 +00:00
Add Define Something Only Once as a clojure til
This commit is contained in:
@@ -7,7 +7,7 @@ variety of languages and technologies. These are things that don't really
|
||||
warrant a full blog post. These are mostly things I learn by pairing with
|
||||
smart people at [Hashrocket](http://hashrocket.com/).
|
||||
|
||||
_418 TILs and counting..._
|
||||
_419 TILs and counting..._
|
||||
|
||||
---
|
||||
|
||||
@@ -44,6 +44,7 @@ _418 TILs and counting..._
|
||||
- [Aggregation Using merge-with](clojure/aggregation-using-merge-with.md)
|
||||
- [Argument Requirements For A Function](clojure/argument-requirements-for-a-function.md)
|
||||
- [Combinations Of Items From A Sequence](clojure/combinations-of-items-from-a-sequence.md)
|
||||
- [Define Something Only Once](clojure/define-something-only-once.md)
|
||||
- [Evaluate One Liners With lein-exec](clojure/evaluate-one-liners-with-lein-exec.md)
|
||||
- [Expanding Macros](clojure/expanding-macros.md)
|
||||
- [Get The Value Of An Environment Variable](clojure/get-the-value-of-an-environment-variable.md)
|
||||
|
||||
22
clojure/define-something-only-once.md
Normal file
22
clojure/define-something-only-once.md
Normal file
@@ -0,0 +1,22 @@
|
||||
# Define Something Only Once
|
||||
|
||||
Clojure provides [`defonce`](https://clojuredocs.org/clojure.core/defonce)
|
||||
which is a macro that defines something only once. Once a variable has been
|
||||
bound to a value, subsequent attempts to do `defounce` for that variable
|
||||
will go unevaluated. This will have no implications for how the `def`
|
||||
special form works.
|
||||
|
||||
Here is an example:
|
||||
|
||||
```clojure
|
||||
(defonce stuff 5)
|
||||
#'user/stuff
|
||||
user=> (defonce stuff "what")
|
||||
nil
|
||||
user=> stuff
|
||||
5
|
||||
user=> (def stuff "okay")
|
||||
#'user/stuff
|
||||
user=> stuff
|
||||
"okay"
|
||||
```
|
||||
Reference in New Issue
Block a user