Thanks to visit codestin.com
Credit goes to github.com

Skip to content

Commit 249c18a

Browse files
author
Ryan Neufeld
committed
Merge pull request clojure-cookbook#424 from cloojure/patch-29
Update 2-13_testing-set-membership.asciidoc
2 parents 0ac95a6 + 335e682 commit 249c18a

File tree

1 file changed

+38
-8
lines changed

1 file changed

+38
-8
lines changed

02_composite-data/2-13_testing-set-membership.asciidoc

Lines changed: 38 additions & 8 deletions
Original file line numberDiff line numberDiff line change
@@ -15,10 +15,11 @@ is a member of the set:
1515

1616
[source,clojure]
1717
----
18-
(contains? #{:red :white :green} :blue)
18+
(def my-set #{:red :white :green})
19+
(contains? my-set :blue)
1920
;; -> false
2021
21-
(contains? #{:red :white :green} :green)
22+
(contains? my-set :green)
2223
;; -> true
2324
----
2425

@@ -28,10 +29,22 @@ value itself if it is a member, or +nil+ if it is not:
2829

2930
[source,clojure]
3031
----
31-
(get #{:red :white :green} :blue)
32+
(get my-set :blue)
3233
;; -> nil
3334
34-
(get #{:red :white :green} :green)
35+
(get my-set :green)
36+
;; -> :green
37+
----
38+
39+
If desired, you can also pass a third argument to be used as the default return value instead
40+
of +nil+ if a set doesn't contain the value:
41+
42+
[source,clojure]
43+
----
44+
(get my-set :blue :no-such-luck)
45+
;; -> :no-such-luck
46+
47+
(get my-set :green :no-such-luck)
3548
;; -> :green
3649
----
3750

@@ -41,8 +54,6 @@ member, and +nil+ otherwise:
4154

4255
[source,clojure]
4356
----
44-
(def my-set #{:red :white :green})
45-
4657
(my-set :blue)
4758
;; -> nil
4859
@@ -55,13 +66,32 @@ do with maps. Thus, the following is equivalent to having used +get+:
5566

5667
[source,clojure]
5768
----
58-
(:blue #{:red :white :green})
69+
(:blue my-set)
5970
;; -> nil
6071
61-
(:green #{:red :white :green})
72+
(:green my-set)
6273
;; -> :green
6374
----
6475

76+
Note that, when using a set as a function, one cannot specify a second argument
77+
as a default value:
78+
79+
[source,clojure]
80+
----
81+
(my-set :blue :no-such-luck)
82+
ArityException Wrong number of args (2) passed to: PersistentHashSet clojure.lang.AFn.throwArity (AFn.java:429)
83+
----
84+
85+
However, you can add a default value when using a keyword as a function with a set as the first argument:
86+
87+
[source,clojure]
88+
----
89+
(:blue my-set :no-such-luck)
90+
;; -> :no-such-luck
91+
92+
user=> (:green my-set :no-such-luck)
93+
;; -> :green
94+
----
6595

6696
==== Discussion
6797

0 commit comments

Comments
 (0)