mirror of
https://github.com/jbranchaud/til
synced 2026-01-03 23:28:02 +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
|
warrant a full blog post. These are mostly things I learn by pairing with
|
||||||
smart people at [Hashrocket](http://hashrocket.com/).
|
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)
|
- [Aggregation Using merge-with](clojure/aggregation-using-merge-with.md)
|
||||||
- [Argument Requirements For A Function](clojure/argument-requirements-for-a-function.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)
|
- [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)
|
- [Evaluate One Liners With lein-exec](clojure/evaluate-one-liners-with-lein-exec.md)
|
||||||
- [Expanding Macros](clojure/expanding-macros.md)
|
- [Expanding Macros](clojure/expanding-macros.md)
|
||||||
- [Get The Value Of An Environment Variable](clojure/get-the-value-of-an-environment-variable.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