@@ -15,10 +15,11 @@ is a member of the set:
15
15
16
16
[source,clojure]
17
17
----
18
- (contains? #{:red :white :green} :blue)
18
+ (def my-set #{:red :white :green})
19
+ (contains? my-set :blue)
19
20
;; -> false
20
21
21
- (contains? #{:red :white :green} :green)
22
+ (contains? my-set :green)
22
23
;; -> true
23
24
----
24
25
@@ -28,10 +29,22 @@ value itself if it is a member, or +nil+ if it is not:
28
29
29
30
[source,clojure]
30
31
----
31
- (get #{:red :white :green} :blue)
32
+ (get my-set :blue)
32
33
;; -> nil
33
34
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)
35
48
;; -> :green
36
49
----
37
50
@@ -41,8 +54,6 @@ member, and +nil+ otherwise:
41
54
42
55
[source,clojure]
43
56
----
44
- (def my-set #{:red :white :green})
45
-
46
57
(my-set :blue)
47
58
;; -> nil
48
59
@@ -55,13 +66,32 @@ do with maps. Thus, the following is equivalent to having used +get+:
55
66
56
67
[source,clojure]
57
68
----
58
- (:blue #{:red :white :green} )
69
+ (:blue my-set )
59
70
;; -> nil
60
71
61
- (:green #{:red :white :green} )
72
+ (:green my-set )
62
73
;; -> :green
63
74
----
64
75
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
+ ----
65
95
66
96
==== Discussion
67
97
0 commit comments