Mercurial > hg > Members > tatsuki > functionaljava-master > core
comparison src/main/java/fj/test/Bool.java @ 0:fe80c1edf1be
add getLoop
author | tatsuki |
---|---|
date | Fri, 20 Mar 2015 21:04:03 +0900 |
parents | |
children |
comparison
equal
deleted
inserted
replaced
-1:000000000000 | 0:fe80c1edf1be |
---|---|
1 package fj.test; | |
2 | |
3 import fj.P1; | |
4 import static fj.test.Property.prop; | |
5 | |
6 /** | |
7 * A boolean wrapper that works well with properties. | |
8 * | |
9 * @version %build.number% | |
10 */ | |
11 public final class Bool { | |
12 private final boolean b; | |
13 | |
14 private static final Bool t = new Bool(true); | |
15 private static final Bool f = new Bool(false); | |
16 | |
17 private Bool(final boolean b) { | |
18 this.b = b; | |
19 } | |
20 | |
21 /** | |
22 * Returns <code>true</code> if this value is true, <code>false</code> otherwise. | |
23 * | |
24 * @return <code>true</code> if this value is true, <code>false</code> otherwise. | |
25 */ | |
26 public boolean is() { | |
27 return b; | |
28 } | |
29 | |
30 /** | |
31 * Returns <code>false</code> if this value is true, <code>true</code> otherwise. | |
32 * | |
33 * @return <code>false</code> if this value is true, <code>true</code> otherwise. | |
34 */ | |
35 public boolean isNot() { | |
36 return !b; | |
37 } | |
38 | |
39 /** | |
40 * Returns a property that produces a result only if this value is true. The result will be taken | |
41 * from the given property. | |
42 * | |
43 * @param p The property to return if this value is true. | |
44 * @return a property that produces a result only if this value is true. | |
45 */ | |
46 public Property implies(final P1<Property> p) { | |
47 return Property.implies(b, p); | |
48 } | |
49 | |
50 /** | |
51 * Returns a property that produces a result only if this value is true. The result will be taken | |
52 * from the given property. | |
53 * | |
54 * @param p The property to return if this value is true. | |
55 * @return a property that produces a result only if this value is true. | |
56 */ | |
57 public Property implies(final Property p) { | |
58 return Property.implies(b, new P1<Property>() { | |
59 public Property _1() { | |
60 return p; | |
61 } | |
62 }); | |
63 } | |
64 | |
65 /** | |
66 * Returns a property that produces a result only if this value is true. | |
67 * | |
68 * @param c The value to construct a property with to return if this value is true. | |
69 * @return a property that produces a result only if this value is true. | |
70 */ | |
71 public Property implies(final Bool c) { | |
72 return implies(prop(c.b)); | |
73 } | |
74 | |
75 /** | |
76 * Returns a property that produces a result only if this value is true. | |
77 * | |
78 * @param c The value to construct a property with to return if this value is true. | |
79 * @return a property that produces a result only if this value is true. | |
80 */ | |
81 public Property implies(final boolean c) { | |
82 return Property.implies(b, new P1<Property>() { | |
83 public Property _1() { | |
84 return prop(c); | |
85 } | |
86 }); | |
87 } | |
88 | |
89 /** | |
90 * Construct a <code>Bool</code> from the given value. | |
91 * | |
92 * @param b The value to construct a <code>Bool</code> with. | |
93 * @return A <code>Bool</code> from the given value. | |
94 */ | |
95 public static Bool bool(final boolean b) { | |
96 return b ? t : f; | |
97 } | |
98 } |